[openstreetmap-carto] 02/05: Imported Upstream version 2.29.1

Christopher Baines cbaines-guest at moszumanska.debian.org
Sun Apr 12 14:03:53 UTC 2015


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

cbaines-guest pushed a commit to branch master
in repository openstreetmap-carto.

commit d0d3b716eaacfd2d5f09c37d628439d51720aa54
Author: Christopher Baines <mail at cbaines.net>
Date:   Sun Apr 12 14:49:09 2015 +0100

    Imported Upstream version 2.29.1
---
 .gitignore                           |    1 +
 .travis.yml                          |   16 +
 CONTRIBUTING.md                      |   78 +
 INSTALL.md                           |   96 ++
 README.md                            |  169 +--
 TODO.md                              |   28 -
 addressing.mss                       |    8 +-
 admin.mss                            |  109 +-
 amenity-points.mss                   | 2000 ++++++++++++++++++-------
 amenity-symbols.mss                  |  112 --
 buildings.mss                        |   78 +-
 ferry-routes.mss                     |   24 +-
 get-shapefiles.sh                    |   35 +-
 landcover.mss                        |  444 ++++--
 openstreetmap-carto.style            |   77 +-
 placenames.mss                       |   97 +-
 power.mss                            |   18 +-
 preview.png                          |  Bin 0 -> 219577 bytes
 project.mml                          | 2709 +++++++++++++++++++---------------
 project.yaml                         | 2093 ++++++++++++++++++++++++++
 roads.mss                            | 1712 ++++++++++-----------
 scripts/create_shield                |   34 +
 scripts/create_standard_shields      |   49 +
 scripts/shop_values.rb               |   41 +
 scripts/travis_check_project_files   |   15 +
 scripts/yaml2mml.py                  |    3 +
 shapefiles.mss                       |    1 +
 stations.mss                         |   23 +-
 style.mss                            |   17 +-
 symbols/aerodrome.p.16.png           |  Bin 377 -> 0 bytes
 symbols/aerodrome.png                |  Bin 888 -> 0 bytes
 symbols/aerodrome.svg                |    4 +
 symbols/aiga_parking1.png            |  Bin 1542 -> 0 bytes
 symbols/allotments.png               |  Bin 911 -> 227 bytes
 symbols/amenity_prison.p.20.png      |  Bin 417 -> 0 bytes
 symbols/arrow.png                    |  Bin 320 -> 0 bytes
 symbols/arrow_back.png               |  Bin 353 -> 0 bytes
 symbols/atm.16.svg                   |   12 +
 symbols/atm.png                      |  Bin 222 -> 0 bytes
 symbols/atm2.p.16.png                |  Bin 437 -> 0 bytes
 symbols/bandb.p.20.png               |  Bin 398 -> 0 bytes
 symbols/bank.16.svg                  |   12 +
 symbols/bank2.p.16.png               |  Bin 410 -> 0 bytes
 symbols/bar.16.svg                   |   12 +
 symbols/bar.p.20.png                 |  Bin 459 -> 0 bytes
 symbols/beach.png                    |  Bin 162 -> 215 bytes
 symbols/biergarten.16.svg            |   12 +
 symbols/biergarten.p.16.png          |  Bin 501 -> 0 bytes
 symbols/bollard.png                  |  Bin 104 -> 0 bytes
 symbols/buddhist.16.svg              |   12 +
 symbols/buddhist.png                 |  Bin 406 -> 0 bytes
 symbols/bus_stop.png                 |  Bin 904 -> 0 bytes
 symbols/bus_stop_small.png           |  Bin 95 -> 0 bytes
 symbols/cafe.16.svg                  |   12 +
 symbols/cafe.p.16.png                |  Bin 361 -> 0 bytes
 symbols/camping.16.svg               |   12 +
 symbols/camping.n.16.png             |  Bin 517 -> 0 bytes
 symbols/cemetery_jewish.18.png       |  Bin 400 -> 0 bytes
 symbols/christian.16.svg             |   12 +
 symbols/christian3.p.14.png          |  Bin 252 -> 0 bytes
 symbols/cinema.16.svg                |   12 +
 symbols/cinema.p.24.png              |  Bin 791 -> 0 bytes
 symbols/cliff.png                    |  Bin 26214 -> 360 bytes
 symbols/cliff2.png                   |  Bin 26214 -> 379 bytes
 symbols/communications.16.svg        |   12 +
 symbols/communications.p.20.png      |  Bin 445 -> 0 bytes
 symbols/dentist.16.svg               |   12 +
 symbols/doctors.16.svg               |   12 +
 symbols/drinking_water.16.svg        |   12 +
 symbols/embankment.png               |  Bin 0 -> 351 bytes
 symbols/embassy.16.svg               |   12 +
 symbols/embassy.png                  |  Bin 2893 -> 0 bytes
 symbols/fast_food.16.svg             |   12 +
 symbols/fast_food.png                |  Bin 3091 -> 0 bytes
 symbols/firestation.16.svg           |   12 +
 symbols/firestation.p.16.png         |  Bin 479 -> 0 bytes
 symbols/florist.16.svg               |   40 +
 symbols/florist.p.16.png             |  Bin 422 -> 0 bytes
 symbols/food_bar.p.16.png            |  Bin 376 -> 0 bytes
 symbols/food_drinkingtap.p.20.png    |  Bin 386 -> 0 bytes
 symbols/fuel.16.svg                  |   12 +
 symbols/fuel.p.16.png                |  Bin 306 -> 0 bytes
 symbols/gate.png                     |  Bin 106 -> 0 bytes
 symbols/gate.svg                     |   11 +
 symbols/gate2.png                    |  Bin 111 -> 0 bytes
 symbols/glacier.png                  |  Bin 122 -> 179 bytes
 symbols/glacier2.png                 |  Bin 199 -> 0 bytes
 symbols/golf.p.20.png                |  Bin 0 -> 605 bytes
 symbols/grave_yard.png               |  Bin 291 -> 0 bytes
 symbols/grave_yard_christian.png     |  Bin 0 -> 161 bytes
 symbols/grave_yard_generic.png       |  Bin 1013 -> 170 bytes
 symbols/grave_yard_jewish.png        |  Bin 0 -> 380 bytes
 symbols/grey_vertical_hatch.png      |  Bin 0 -> 95 bytes
 symbols/halt.png                     |  Bin 94 -> 0 bytes
 symbols/helipad.p.16.png             |  Bin 519 -> 0 bytes
 symbols/helipad.svg                  |    4 +
 symbols/hindu.png                    |  Bin 464 -> 0 bytes
 symbols/hinduist.16.svg              |   12 +
 symbols/hospital.16.svg              |   12 +
 symbols/hospital.p.16.png            |  Bin 557 -> 0 bytes
 symbols/hospital.png                 |  Bin 491 -> 0 bytes
 symbols/hostel.p.20.png              |  Bin 539 -> 597 bytes
 symbols/islamic3.p.16.png            |  Bin 387 -> 0 bytes
 symbols/jewish.16.svg                |   12 +
 symbols/jewish3.p.16.png             |  Bin 397 -> 0 bytes
 symbols/landfill.png                 |  Bin 122 -> 0 bytes
 symbols/level_crossing.png           |  Bin 124 -> 0 bytes
 symbols/level_crossing.svg           |   11 +
 symbols/level_crossing2.png          |  Bin 154 -> 0 bytes
 symbols/level_crossing2.svg          |   11 +
 symbols/liftgate.png                 |  Bin 166 -> 0 bytes
 symbols/liftgate.svg                 |    8 +
 symbols/lock_gate.png                |  Bin 172 -> 0 bytes
 symbols/london-tube-24.png           |  Bin 621 -> 0 bytes
 symbols/marsh.png                    |  Bin 621 -> 0 bytes
 symbols/memorial.png                 |  Bin 3055 -> 0 bytes
 symbols/mini_round.png               |  Bin 26852 -> 0 bytes
 symbols/mini_roundabout.svg          |   10 +
 symbols/miniature_golf.p.20.png      |  Bin 0 -> 789 bytes
 symbols/mosque.png                   |  Bin 1023 -> 0 bytes
 symbols/mot_shield1.png              |  Bin 412 -> 0 bytes
 symbols/mot_shield2.png              |  Bin 439 -> 0 bytes
 symbols/mot_shield3.png              |  Bin 441 -> 0 bytes
 symbols/mot_shield4.png              |  Bin 445 -> 0 bytes
 symbols/mot_shield5.png              |  Bin 446 -> 0 bytes
 symbols/mot_shield6.png              |  Bin 447 -> 0 bytes
 symbols/mot_shield7.png              |  Bin 447 -> 0 bytes
 symbols/mot_shield8.png              |  Bin 450 -> 0 bytes
 symbols/motorway_shield1.png         |  Bin 176 -> 0 bytes
 symbols/motorway_shield2.png         |  Bin 256 -> 0 bytes
 symbols/motorway_shield3.png         |  Bin 251 -> 0 bytes
 symbols/motorway_shield4.png         |  Bin 239 -> 0 bytes
 symbols/motorway_shield5.png         |  Bin 205 -> 0 bytes
 symbols/motorway_shield6.png         |  Bin 207 -> 0 bytes
 symbols/mud.png                      |  Bin 104 -> 134 bytes
 symbols/museum.16.svg                |   12 +
 symbols/museum.p.16.png              |  Bin 311 -> 0 bytes
 symbols/muslim.16.svg                |   12 +
 symbols/nature_reserve.png           |  Bin 141 -> 0 bytes
 symbols/nature_reserve2.png          |  Bin 170 -> 0 bytes
 symbols/nature_reserve2T.png         |  Bin 246 -> 0 bytes
 symbols/nature_reserve5.png          |  Bin 341 -> 0 bytes
 symbols/nature_reserve6.png          |  Bin 365 -> 0 bytes
 symbols/nature_reserveT.png          |  Bin 209 -> 0 bytes
 symbols/nightclub.18.svg             |   47 +
 symbols/orchard.png                  |  Bin 110 -> 134 bytes
 symbols/parking.p.16.png             |  Bin 312 -> 0 bytes
 symbols/parking.png                  |  Bin 409 -> 0 bytes
 symbols/parking.svg                  |    4 +
 symbols/parking_private.p.16.png     |  Bin 377 -> 0 bytes
 symbols/peak.png                     |  Bin 119 -> 0 bytes
 symbols/peak.svg                     |    8 +
 symbols/pharmacy.16.svg              |   12 +
 symbols/pharmacy.p.16.png            |  Bin 341 -> 0 bytes
 symbols/picnic.16.svg                |   12 +
 symbols/picnic.p.16.png              |  Bin 409 -> 0 bytes
 symbols/pint.png                     |  Bin 486 -> 0 bytes
 symbols/place_of_worship.16.svg      |   12 +
 symbols/place_of_worship.png         |  Bin 209 -> 0 bytes
 symbols/place_of_worship3.p.16.png   |  Bin 190 -> 0 bytes
 symbols/place_of_worship3.png        |  Bin 103 -> 0 bytes
 symbols/playground.16.svg            |   19 +
 symbols/playground.p.20.png          |  Bin 575 -> 0 bytes
 symbols/police.16.svg                |   12 +
 symbols/police.p.16.png              |  Bin 657 -> 0 bytes
 symbols/post_box.png                 |  Bin 337 -> 0 bytes
 symbols/post_office.png              |  Bin 413 -> 0 bytes
 symbols/postoffice.png               |  Bin 297 -> 0 bytes
 symbols/power_line.png               |  Bin 131 -> 0 bytes
 symbols/power_pole.png               |  Bin 94 -> 0 bytes
 symbols/power_tower.png              |  Bin 115 -> 0 bytes
 symbols/power_tower.svg              |   11 +
 symbols/power_tower_3x3.png          |  Bin 933 -> 0 bytes
 symbols/power_tower_5x5.png          |  Bin 947 -> 0 bytes
 symbols/power_tower_small.svg        |    9 +
 symbols/pri_shield1.png              |  Bin 422 -> 0 bytes
 symbols/pri_shield2.png              |  Bin 431 -> 0 bytes
 symbols/pri_shield3.png              |  Bin 433 -> 0 bytes
 symbols/pri_shield4.png              |  Bin 437 -> 0 bytes
 symbols/pri_shield5.png              |  Bin 439 -> 0 bytes
 symbols/pri_shield6.png              |  Bin 440 -> 0 bytes
 symbols/pri_shield7.png              |  Bin 440 -> 0 bytes
 symbols/pri_shield8.png              |  Bin 442 -> 0 bytes
 symbols/primary_shield1.png          |  Bin 175 -> 0 bytes
 symbols/primary_shield2.png          |  Bin 181 -> 0 bytes
 symbols/primary_shield3.png          |  Bin 181 -> 0 bytes
 symbols/primary_shield4.png          |  Bin 197 -> 0 bytes
 symbols/primary_shield5.png          |  Bin 197 -> 0 bytes
 symbols/primary_shield6.png          |  Bin 199 -> 0 bytes
 symbols/primary_shield7.png          |  Bin 199 -> 0 bytes
 symbols/primary_shield8.png          |  Bin 207 -> 0 bytes
 symbols/prison.16.svg                |   12 +
 symbols/pub.16.svg                   |   12 +
 symbols/pub.p.16.png                 |  Bin 433 -> 0 bytes
 symbols/pub.png                      |  Bin 307 -> 0 bytes
 symbols/quarry.png                   |  Bin 131 -> 189 bytes
 symbols/quarry2.png                  |  Bin 139 -> 0 bytes
 symbols/recycle.png                  |  Bin 1118 -> 0 bytes
 symbols/recycling.16.svg             |   12 +
 symbols/recycling.p.16.png           |  Bin 562 -> 0 bytes
 symbols/recycling.png                |  Bin 645 -> 0 bytes
 symbols/rental_bicycle.16.svg        |   12 +
 symbols/rental_bicycle.p.20.png      |  Bin 802 -> 0 bytes
 symbols/rental_car.16.svg            |   12 +
 symbols/restaurant.16.svg            |   12 +
 symbols/restaurant.p.16.png          |  Bin 502 -> 0 bytes
 symbols/rock_overlay.png             |  Bin 0 -> 98024 bytes
 symbols/saddle.svg                   |    8 +
 symbols/school.png                   |  Bin 3136 -> 0 bytes
 symbols/scree_overlay.png            |  Bin 0 -> 44048 bytes
 symbols/scrub.png                    |  Bin 166 -> 210 bytes
 symbols/sec_shield1.png              |  Bin 422 -> 0 bytes
 symbols/sec_shield2.png              |  Bin 431 -> 0 bytes
 symbols/sec_shield3.png              |  Bin 433 -> 0 bytes
 symbols/sec_shield4.png              |  Bin 437 -> 0 bytes
 symbols/sec_shield5.png              |  Bin 439 -> 0 bytes
 symbols/sec_shield6.png              |  Bin 440 -> 0 bytes
 symbols/sec_shield7.png              |  Bin 440 -> 0 bytes
 symbols/sec_shield8.png              |  Bin 442 -> 0 bytes
 symbols/secondary_shield1.png        |  Bin 168 -> 0 bytes
 symbols/secondary_shield2.png        |  Bin 174 -> 0 bytes
 symbols/secondary_shield3.png        |  Bin 176 -> 0 bytes
 symbols/secondary_shield4.png        |  Bin 191 -> 0 bytes
 symbols/secondary_shield5.png        |  Bin 194 -> 0 bytes
 symbols/secondary_shield6.png        |  Bin 196 -> 0 bytes
 symbols/secondary_shield7.png        |  Bin 195 -> 0 bytes
 symbols/secondary_shield8.png        |  Bin 202 -> 0 bytes
 symbols/shields/motorway_10x1.svg    |    5 +
 symbols/shields/motorway_10x2.svg    |    5 +
 symbols/shields/motorway_10x3.svg    |    5 +
 symbols/shields/motorway_10x4.svg    |    5 +
 symbols/shields/motorway_11x1.svg    |    5 +
 symbols/shields/motorway_11x2.svg    |    5 +
 symbols/shields/motorway_11x3.svg    |    5 +
 symbols/shields/motorway_11x4.svg    |    5 +
 symbols/shields/motorway_1x1.svg     |    5 +
 symbols/shields/motorway_1x2.svg     |    5 +
 symbols/shields/motorway_1x3.svg     |    5 +
 symbols/shields/motorway_1x4.svg     |    5 +
 symbols/shields/motorway_2x1.svg     |    5 +
 symbols/shields/motorway_2x2.svg     |    5 +
 symbols/shields/motorway_2x3.svg     |    5 +
 symbols/shields/motorway_2x4.svg     |    5 +
 symbols/shields/motorway_3x1.svg     |    5 +
 symbols/shields/motorway_3x2.svg     |    5 +
 symbols/shields/motorway_3x3.svg     |    5 +
 symbols/shields/motorway_3x4.svg     |    5 +
 symbols/shields/motorway_4x1.svg     |    5 +
 symbols/shields/motorway_4x2.svg     |    5 +
 symbols/shields/motorway_4x3.svg     |    5 +
 symbols/shields/motorway_4x4.svg     |    5 +
 symbols/shields/motorway_5x1.svg     |    5 +
 symbols/shields/motorway_5x2.svg     |    5 +
 symbols/shields/motorway_5x3.svg     |    5 +
 symbols/shields/motorway_5x4.svg     |    5 +
 symbols/shields/motorway_6x1.svg     |    5 +
 symbols/shields/motorway_6x2.svg     |    5 +
 symbols/shields/motorway_6x3.svg     |    5 +
 symbols/shields/motorway_6x4.svg     |    5 +
 symbols/shields/motorway_7x1.svg     |    5 +
 symbols/shields/motorway_7x2.svg     |    5 +
 symbols/shields/motorway_7x3.svg     |    5 +
 symbols/shields/motorway_7x4.svg     |    5 +
 symbols/shields/motorway_8x1.svg     |    5 +
 symbols/shields/motorway_8x2.svg     |    5 +
 symbols/shields/motorway_8x3.svg     |    5 +
 symbols/shields/motorway_8x4.svg     |    5 +
 symbols/shields/motorway_9x1.svg     |    5 +
 symbols/shields/motorway_9x2.svg     |    5 +
 symbols/shields/motorway_9x3.svg     |    5 +
 symbols/shields/motorway_9x4.svg     |    5 +
 symbols/shields/primary_10x1.svg     |    5 +
 symbols/shields/primary_10x2.svg     |    5 +
 symbols/shields/primary_10x3.svg     |    5 +
 symbols/shields/primary_10x4.svg     |    5 +
 symbols/shields/primary_11x1.svg     |    5 +
 symbols/shields/primary_11x2.svg     |    5 +
 symbols/shields/primary_11x3.svg     |    5 +
 symbols/shields/primary_11x4.svg     |    5 +
 symbols/shields/primary_1x1.svg      |    5 +
 symbols/shields/primary_1x2.svg      |    5 +
 symbols/shields/primary_1x3.svg      |    5 +
 symbols/shields/primary_1x4.svg      |    5 +
 symbols/shields/primary_2x1.svg      |    5 +
 symbols/shields/primary_2x2.svg      |    5 +
 symbols/shields/primary_2x3.svg      |    5 +
 symbols/shields/primary_2x4.svg      |    5 +
 symbols/shields/primary_3x1.svg      |    5 +
 symbols/shields/primary_3x2.svg      |    5 +
 symbols/shields/primary_3x3.svg      |    5 +
 symbols/shields/primary_3x4.svg      |    5 +
 symbols/shields/primary_4x1.svg      |    5 +
 symbols/shields/primary_4x2.svg      |    5 +
 symbols/shields/primary_4x3.svg      |    5 +
 symbols/shields/primary_4x4.svg      |    5 +
 symbols/shields/primary_5x1.svg      |    5 +
 symbols/shields/primary_5x2.svg      |    5 +
 symbols/shields/primary_5x3.svg      |    5 +
 symbols/shields/primary_5x4.svg      |    5 +
 symbols/shields/primary_6x1.svg      |    5 +
 symbols/shields/primary_6x2.svg      |    5 +
 symbols/shields/primary_6x3.svg      |    5 +
 symbols/shields/primary_6x4.svg      |    5 +
 symbols/shields/primary_7x1.svg      |    5 +
 symbols/shields/primary_7x2.svg      |    5 +
 symbols/shields/primary_7x3.svg      |    5 +
 symbols/shields/primary_7x4.svg      |    5 +
 symbols/shields/primary_8x1.svg      |    5 +
 symbols/shields/primary_8x2.svg      |    5 +
 symbols/shields/primary_8x3.svg      |    5 +
 symbols/shields/primary_8x4.svg      |    5 +
 symbols/shields/primary_9x1.svg      |    5 +
 symbols/shields/primary_9x2.svg      |    5 +
 symbols/shields/primary_9x3.svg      |    5 +
 symbols/shields/primary_9x4.svg      |    5 +
 symbols/shields/secondary_10x1.svg   |    5 +
 symbols/shields/secondary_10x2.svg   |    5 +
 symbols/shields/secondary_10x3.svg   |    5 +
 symbols/shields/secondary_10x4.svg   |    5 +
 symbols/shields/secondary_11x1.svg   |    5 +
 symbols/shields/secondary_11x2.svg   |    5 +
 symbols/shields/secondary_11x3.svg   |    5 +
 symbols/shields/secondary_11x4.svg   |    5 +
 symbols/shields/secondary_1x1.svg    |    5 +
 symbols/shields/secondary_1x2.svg    |    5 +
 symbols/shields/secondary_1x3.svg    |    5 +
 symbols/shields/secondary_1x4.svg    |    5 +
 symbols/shields/secondary_2x1.svg    |    5 +
 symbols/shields/secondary_2x2.svg    |    5 +
 symbols/shields/secondary_2x3.svg    |    5 +
 symbols/shields/secondary_2x4.svg    |    5 +
 symbols/shields/secondary_3x1.svg    |    5 +
 symbols/shields/secondary_3x2.svg    |    5 +
 symbols/shields/secondary_3x3.svg    |    5 +
 symbols/shields/secondary_3x4.svg    |    5 +
 symbols/shields/secondary_4x1.svg    |    5 +
 symbols/shields/secondary_4x2.svg    |    5 +
 symbols/shields/secondary_4x3.svg    |    5 +
 symbols/shields/secondary_4x4.svg    |    5 +
 symbols/shields/secondary_5x1.svg    |    5 +
 symbols/shields/secondary_5x2.svg    |    5 +
 symbols/shields/secondary_5x3.svg    |    5 +
 symbols/shields/secondary_5x4.svg    |    5 +
 symbols/shields/secondary_6x1.svg    |    5 +
 symbols/shields/secondary_6x2.svg    |    5 +
 symbols/shields/secondary_6x3.svg    |    5 +
 symbols/shields/secondary_6x4.svg    |    5 +
 symbols/shields/secondary_7x1.svg    |    5 +
 symbols/shields/secondary_7x2.svg    |    5 +
 symbols/shields/secondary_7x3.svg    |    5 +
 symbols/shields/secondary_7x4.svg    |    5 +
 symbols/shields/secondary_8x1.svg    |    5 +
 symbols/shields/secondary_8x2.svg    |    5 +
 symbols/shields/secondary_8x3.svg    |    5 +
 symbols/shields/secondary_8x4.svg    |    5 +
 symbols/shields/secondary_9x1.svg    |    5 +
 symbols/shields/secondary_9x2.svg    |    5 +
 symbols/shields/secondary_9x3.svg    |    5 +
 symbols/shields/secondary_9x4.svg    |    5 +
 symbols/shields/tertiary_10x1.svg    |    5 +
 symbols/shields/tertiary_10x2.svg    |    5 +
 symbols/shields/tertiary_10x3.svg    |    5 +
 symbols/shields/tertiary_10x4.svg    |    5 +
 symbols/shields/tertiary_11x1.svg    |    5 +
 symbols/shields/tertiary_11x2.svg    |    5 +
 symbols/shields/tertiary_11x3.svg    |    5 +
 symbols/shields/tertiary_11x4.svg    |    5 +
 symbols/shields/tertiary_1x1.svg     |    5 +
 symbols/shields/tertiary_1x2.svg     |    5 +
 symbols/shields/tertiary_1x3.svg     |    5 +
 symbols/shields/tertiary_1x4.svg     |    5 +
 symbols/shields/tertiary_2x1.svg     |    5 +
 symbols/shields/tertiary_2x2.svg     |    5 +
 symbols/shields/tertiary_2x3.svg     |    5 +
 symbols/shields/tertiary_2x4.svg     |    5 +
 symbols/shields/tertiary_3x1.svg     |    5 +
 symbols/shields/tertiary_3x2.svg     |    5 +
 symbols/shields/tertiary_3x3.svg     |    5 +
 symbols/shields/tertiary_3x4.svg     |    5 +
 symbols/shields/tertiary_4x1.svg     |    5 +
 symbols/shields/tertiary_4x2.svg     |    5 +
 symbols/shields/tertiary_4x3.svg     |    5 +
 symbols/shields/tertiary_4x4.svg     |    5 +
 symbols/shields/tertiary_5x1.svg     |    5 +
 symbols/shields/tertiary_5x2.svg     |    5 +
 symbols/shields/tertiary_5x3.svg     |    5 +
 symbols/shields/tertiary_5x4.svg     |    5 +
 symbols/shields/tertiary_6x1.svg     |    5 +
 symbols/shields/tertiary_6x2.svg     |    5 +
 symbols/shields/tertiary_6x3.svg     |    5 +
 symbols/shields/tertiary_6x4.svg     |    5 +
 symbols/shields/tertiary_7x1.svg     |    5 +
 symbols/shields/tertiary_7x2.svg     |    5 +
 symbols/shields/tertiary_7x3.svg     |    5 +
 symbols/shields/tertiary_7x4.svg     |    5 +
 symbols/shields/tertiary_8x1.svg     |    5 +
 symbols/shields/tertiary_8x2.svg     |    5 +
 symbols/shields/tertiary_8x3.svg     |    5 +
 symbols/shields/tertiary_8x4.svg     |    5 +
 symbols/shields/tertiary_9x1.svg     |    5 +
 symbols/shields/tertiary_9x2.svg     |    5 +
 symbols/shields/tertiary_9x3.svg     |    5 +
 symbols/shields/tertiary_9x4.svg     |    5 +
 symbols/shields/trunk_10x1.svg       |    5 +
 symbols/shields/trunk_10x2.svg       |    5 +
 symbols/shields/trunk_10x3.svg       |    5 +
 symbols/shields/trunk_10x4.svg       |    5 +
 symbols/shields/trunk_11x1.svg       |    5 +
 symbols/shields/trunk_11x2.svg       |    5 +
 symbols/shields/trunk_11x3.svg       |    5 +
 symbols/shields/trunk_11x4.svg       |    5 +
 symbols/shields/trunk_1x1.svg        |    5 +
 symbols/shields/trunk_1x2.svg        |    5 +
 symbols/shields/trunk_1x3.svg        |    5 +
 symbols/shields/trunk_1x4.svg        |    5 +
 symbols/shields/trunk_2x1.svg        |    5 +
 symbols/shields/trunk_2x2.svg        |    5 +
 symbols/shields/trunk_2x3.svg        |    5 +
 symbols/shields/trunk_2x4.svg        |    5 +
 symbols/shields/trunk_3x1.svg        |    5 +
 symbols/shields/trunk_3x2.svg        |    5 +
 symbols/shields/trunk_3x3.svg        |    5 +
 symbols/shields/trunk_3x4.svg        |    5 +
 symbols/shields/trunk_4x1.svg        |    5 +
 symbols/shields/trunk_4x2.svg        |    5 +
 symbols/shields/trunk_4x3.svg        |    5 +
 symbols/shields/trunk_4x4.svg        |    5 +
 symbols/shields/trunk_5x1.svg        |    5 +
 symbols/shields/trunk_5x2.svg        |    5 +
 symbols/shields/trunk_5x3.svg        |    5 +
 symbols/shields/trunk_5x4.svg        |    5 +
 symbols/shields/trunk_6x1.svg        |    5 +
 symbols/shields/trunk_6x2.svg        |    5 +
 symbols/shields/trunk_6x3.svg        |    5 +
 symbols/shields/trunk_6x4.svg        |    5 +
 symbols/shields/trunk_7x1.svg        |    5 +
 symbols/shields/trunk_7x2.svg        |    5 +
 symbols/shields/trunk_7x3.svg        |    5 +
 symbols/shields/trunk_7x4.svg        |    5 +
 symbols/shields/trunk_8x1.svg        |    5 +
 symbols/shields/trunk_8x2.svg        |    5 +
 symbols/shields/trunk_8x3.svg        |    5 +
 symbols/shields/trunk_8x4.svg        |    5 +
 symbols/shields/trunk_9x1.svg        |    5 +
 symbols/shields/trunk_9x2.svg        |    5 +
 symbols/shields/trunk_9x3.svg        |    5 +
 symbols/shields/trunk_9x4.svg        |    5 +
 symbols/shinto.png                   |  Bin 413 -> 0 bytes
 symbols/shintoist.16.svg             |   12 +
 symbols/shop_bakery.16.svg           |   12 +
 symbols/shop_bakery.p.16.png         |  Bin 441 -> 0 bytes
 symbols/shop_books.16.svg            |   12 +
 symbols/shop_car.svg                 |   12 +
 symbols/shop_clothes.p.16.png        |  Bin 312 -> 0 bytes
 symbols/shop_clothes.svg             |    4 +
 symbols/shop_convenience.p.16.png    |  Bin 373 -> 0 bytes
 symbols/shop_convenience.svg         |   16 +
 symbols/shop_hairdresser.16.svg      |   40 +
 symbols/shop_hairdresser.p.16.png    |  Bin 472 -> 0 bytes
 symbols/shop_pet.16.svg              |   40 +
 symbols/shop_supermarket.p.16.png    |  Bin 425 -> 0 bytes
 symbols/shop_supermarket.svg         |   20 +
 symbols/shopping_car.p.16.png        |  Bin 438 -> 0 bytes
 symbols/shopping_car_repair.16.svg   |   40 +
 symbols/shopping_car_repair.p.16.png |  Bin 457 -> 0 bytes
 symbols/sikh.png                     |  Bin 1297 -> 0 bytes
 symbols/sikh3.p.16.png               |  Bin 400 -> 0 bytes
 symbols/sikhist.16.svg               |   12 +
 symbols/spring.png                   |  Bin 108 -> 0 bytes
 symbols/spring.svg                   |    9 +
 symbols/square.svg                   |    8 +
 symbols/station.png                  |  Bin 95 -> 0 bytes
 symbols/station_disused.png          |  Bin 95 -> 0 bytes
 symbols/station_small.png            |  Bin 95 -> 0 bytes
 symbols/synagogue.png                |  Bin 376 -> 0 bytes
 symbols/taoist.16.svg                |   12 +
 symbols/taoist.png                   |  Bin 536 -> 0 bytes
 symbols/ter_shield1.png              |  Bin 422 -> 0 bytes
 symbols/ter_shield2.png              |  Bin 431 -> 0 bytes
 symbols/ter_shield3.png              |  Bin 433 -> 0 bytes
 symbols/ter_shield4.png              |  Bin 437 -> 0 bytes
 symbols/ter_shield5.png              |  Bin 439 -> 0 bytes
 symbols/ter_shield6.png              |  Bin 440 -> 0 bytes
 symbols/ter_shield7.png              |  Bin 440 -> 0 bytes
 symbols/ter_shield8.png              |  Bin 442 -> 0 bytes
 symbols/tertiary_shield1.png         |  Bin 176 -> 0 bytes
 symbols/tertiary_shield2.png         |  Bin 182 -> 0 bytes
 symbols/tertiary_shield3.png         |  Bin 184 -> 0 bytes
 symbols/tertiary_shield4.png         |  Bin 204 -> 0 bytes
 symbols/tertiary_shield5.png         |  Bin 204 -> 0 bytes
 symbols/tertiary_shield6.png         |  Bin 206 -> 0 bytes
 symbols/tertiary_shield7.png         |  Bin 206 -> 0 bytes
 symbols/tertiary_shield8.png         |  Bin 214 -> 0 bytes
 symbols/theatre.16.svg               |   40 +
 symbols/theatre.p.20.png             |  Bin 785 -> 0 bytes
 symbols/toilets.16.svg               |   12 +
 symbols/toilets.p.20.png             |  Bin 586 -> 0 bytes
 symbols/tourist_memorial.16.svg      |   12 +
 symbols/tourist_memorial.p.20.png    |  Bin 533 -> 0 bytes
 symbols/tower.png                    |  Bin 327 -> 0 bytes
 symbols/town_hall.16.svg             |   12 +
 symbols/traffic_light.png            |  Bin 1169 -> 0 bytes
 symbols/traffic_light.svg            |   11 +
 symbols/tree.png                     |  Bin 102 -> 0 bytes
 symbols/tree2.png                    |  Bin 120 -> 0 bytes
 symbols/tru_shield1.png              |  Bin 422 -> 0 bytes
 symbols/tru_shield2.png              |  Bin 431 -> 0 bytes
 symbols/tru_shield3.png              |  Bin 433 -> 0 bytes
 symbols/tru_shield4.png              |  Bin 437 -> 0 bytes
 symbols/tru_shield5.png              |  Bin 441 -> 0 bytes
 symbols/tru_shield6.png              |  Bin 440 -> 0 bytes
 symbols/tru_shield7.png              |  Bin 440 -> 0 bytes
 symbols/tru_shield8.png              |  Bin 442 -> 0 bytes
 symbols/trunk_shield1.png            |  Bin 175 -> 0 bytes
 symbols/trunk_shield2.png            |  Bin 181 -> 0 bytes
 symbols/trunk_shield3.png            |  Bin 184 -> 0 bytes
 symbols/trunk_shield4.png            |  Bin 202 -> 0 bytes
 symbols/trunk_shield5.png            |  Bin 202 -> 0 bytes
 symbols/trunk_shield6.png            |  Bin 205 -> 0 bytes
 symbols/trunk_shield7.png            |  Bin 204 -> 0 bytes
 symbols/trunk_shield8.png            |  Bin 212 -> 0 bytes
 symbols/vineyard.png                 |  Bin 149 -> 190 bytes
 symbols/volcano.png                  |  Bin 264 -> 0 bytes
 symbols/water_park.p.20.png          |  Bin 0 -> 802 bytes
 symbols/wetland.png                  |  Bin 0 -> 2832 bytes
 symbols/windmill.png                 |  Bin 186 -> 617 bytes
 symbols/zoo.png                      |  Bin 129 -> 165 bytes
 water-features.mss                   |  170 ++-
 water.mss                            |  380 +++--
 529 files changed, 9243 insertions(+), 3419 deletions(-)

diff --git a/.gitignore b/.gitignore
index 59f0845..3eead54 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
 layers/
 data/
 *.xml
+node_modules/
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..70914eb
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,16 @@
+language: node_js
+cache: apt
+node_js:
+  - "0.10"
+before_install:
+  - sudo apt-get update -qq
+  - sudo apt-get install -y -q python-demjson python-yaml
+install:
+  - npm install carto at 0.12.1
+  - mkdir -p data/world_boundaries data/simplified-land-polygons-complete-3857 data/ne_110m_admin_0_boundary_lines_land data/ne_10m_populated_places data/land-polygons-split-3857
+  - touch data/world_boundaries/builtup_area.shp data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp data/land-polygons-split-3857/land_polygons.shp
+
+script:
+  - jsonlint project.mml
+  - ./node_modules/carto/bin/carto project.mml | xmllint - | wc -l
+  - ./scripts/travis_check_project_files
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 0000000..544cc43
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,78 @@
+# OpenStreetMap Carto contribution guidelines
+
+## Workflow
+
+We operate the "Fork & Pull" model explained at
+
+https://help.github.com/articles/using-pull-requests
+
+You should fork the project into your own repo, create a topic branch
+there and then make one or more pull requests back to the gravitystorm repository.
+Your pull requests will then be reviewed and discussed.
+
+## Editing Layers
+
+OpenStreetMap Carto uses a YAML file for defining layers. Some of the rationale is outlined in [a GitHub issue](https://github.com/gravitystorm/openstreetmap-carto/issues/711). Editing multi-line SQL statements in a YAML file is much friendlier than editing escaped SQL in a JSON file.
+
+This requires a preprocessing step to convert the YAML to JSON. A script is provided at `scripts/yaml2mml.py`, which depends on PyYAML, available through `pip install pyyaml` or packaged on Ubuntu as `python-yaml`.
+
+After editing the YAML file, run `./scripts/yaml2mml.py < project.yaml > project.mml && touch project.mml` to update the file and force TileMill to reload it.
+
+When committing changes, add both the `project.yaml` and `project.mml` files to the commit. One of the big advantages of this system is that to resolve any layer merge conflicts, they only need to be resolved in the YAML file where they are easier to handle, then the JSON file can be regenerated, while at the same time the styles work with Tilemill out-of-the-box without needing to run the `yaml2mml` script.
+
+## CartoCSS Style Guidelines
+
+* Always specify zoom levels as either >= or < . Don't use = or =< or >
+* Open curly braces on the same line, and close on an empty line.
+* One space before and after = etc
+* Two space indents. No tabs.
+* space after : but not before
+* Dashes, not underscores, in layer names
+* Avoid restating defaults, e.g. don't add `point-allow-overlap = false`
+* Avoid repeating the layer name for layers with mutiple attachments, i.e., prefer
+
+```css
+#layer {
+  ::outline {
+    line-width: 6;
+    line-color: black;
+  }
+  ::inline {
+    line-width: 2;
+    line-color: white;
+  }
+}
+```
+instead of
+
+```css
+#layer::outline {
+    line-width: 6;
+    line-color: black;
+}
+#layer::inline {
+    line-width: 2;
+    line-color: white;
+}
+```
+* Order the selectors in a style-sheet in rough order of importance (i.e., highway=primary, then highway=secondary) and beyond that, add layers that are rendered later (i.e., higher) lower in the file.
+
+## SQL Style Guidelines
+Because SQL within JSON or YAML will not generally be syntax highlighted, indentation and caps are particularly important.
+
+* SQL keywords in caps, as in PostgreSQL documentation
+* Two space indents. No tabs.
+* Start with `(SELECT` and start the columns on the next line.
+* Two indents for columns, to bring them to the same indent level as later clause contents
+* Add indentation after `SELECT`s until the end of the sub-select.
+* Add indentation for contents of `FROM`, `WHERE`, `ORDER BY` and other clauses
+* Put content with WHERE, etc if it's short
+* Add indentation if necessary for complex function calls, WHERE parenthesis, and CASE statements
+* One space before and after = etc
+* Name SQL subqueries after the layer name (but use underscores)
+
+## Previews
+
+Some changes benefit from a review from a wider audience. In most cases some static images are sufficient, but sometimes a demo layer is necessary. pnorman has a private server which can host layers and has some data from parts of the world loaded. Before requesting this in a pull request, make sure that you don't anticipate any more changes to it.
+
+This does not replace reviewing your changes in Tilemill
diff --git a/INSTALL.md b/INSTALL.md
new file mode 100644
index 0000000..ab22cee
--- /dev/null
+++ b/INSTALL.md
@@ -0,0 +1,96 @@
+# Installation
+
+You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is `gis`, table names are `planet_osm_point`, etc).
+
+It's probably easiest to grab an PBF of OSM data from [Mapzen](https://mapzen.com/metro-extracts/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql:
+
+```
+osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style
+```
+
+You can find a more detailed guide to setting up a database and loading data with osm2pgsql at [switch2osm.org](http://switch2osm.org/loading-osm-data/).
+
+Additionally you need some shapefiles.
+
+## Scripted download
+
+To download the shapefiles you can run the following script from this directory. No further steps should be needed as the data has been processed and placed in the requisite directories.
+
+```
+./get-shapefiles.sh
+```
+
+## Manual download
+
+You can also download them manually at the following paths:
+
+* [`simplified-land-polygons.shp`](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip) (updated daily)
+* [`land-polygon.shp`](http://data.openstreetmapdata.com/land-polygons-split-3857.zip) (updated daily)
+* [`builtup_area.shp`](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz)
+* [`ne_110m_admin_0_boundary_lines_land.shp`](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip)
+* [`ne_10m_populated_places_fixed.shp`](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see [below](#populated-places-shapefile))
+
+The repeated www.naturalearthdata.com in the Natural Earth shapefiles is correct.
+
+Put these shapefiles at `path/to/openstreetmap-carto/data`.
+
+### Populated places shapefile
+
+The Natural Earth 2.0 populated places shapefile contains data that triggers a bug in mapnik. As
+a workaround we run the shapefile through ogr2ogr to clean up the data.
+
+```
+ogr2ogr ne_10m_populated_places_fixed.shp ne_10m_populated_places.shp
+```
+
+See https://github.com/mapnik/mapnik/issues/1605 for more details.
+
+## Fonts
+The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu is indicated.
+
+If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems.
+
+### Global
+* DejaVu Sans, for most languages (`ttf-dejavu`)
+* Droid Sans Fallback, as a reasonable fallback (`fonts-droid`)
+* Unifont, as a last resort fallback (`ttf-unifont`)
+
+### Southeast Asia
+* Arundina Sans, for Thai (`fonts-sipa-arundina`)
+* Padauk, for Burmese (`fonts-sil-padauk`)
+* Khmer OS Metal Chrieng Regular, for Khmer (`fonts-khmeros`)
+
+### South Asia
+
+* Mukti Narrow, for Bangali (`ttf-indic-fonts-core`)
+* Gargi Medium, for Devanagari (`ttf-indic-fonts-core`)
+* TSCu_Paranar, for Tamil (`ttf-tamil-fonts` or ``fonts-taml-tscu``, depending on your Ubuntu version)
+* Mallige, for Kannada (`ttf-indic-fonts-core` for normal and bold and `ttf-kannada-fonts` for oblique) *The filename uses "Malige" but the font name uses "Mallige"*
+
+On Ubuntu you can install all the fonts with
+
+```
+sudo apt-get install ttf-dejavu fonts-droid ttf-unifont fonts-sipa-arundina fonts-sil-padauk fonts-khmeros \
+ttf-indic-fonts-core fonts-taml-tscu ttf-kannada-fonts
+```
+In Ubuntu 13.10 (Saucy) and lower, replace fonts-taml-tscu with ttf-tamil-fonts.
+
+## Dependencies
+
+* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory
+
+If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapnik XML using the command-line `carto` command.
+
+* [carto](https://github.com/mapbox/carto) >= 0.9.5 (we're using instances with cascading rules and min/max zoom properties)
+* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0
+
+---
+
+* [osm2pgsql](http://wiki.openstreetmap.org/wiki/Osm2pgsql) to import your data into a PostGIS database
+* [PostgreSQL](http://www.postgresql.org/)
+* [PostGIS](http://postgis.org/)
+* [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data.
+* curl, unzip for downloading and decompressing files
+* shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles
+
+* [PyYAML](http://pyyaml.org/wiki/PyYAML) if editing the MML (layer definition) file (packaged as `python-yaml` on Ubuntu, or installed with `pip install pyyaml`)
diff --git a/README.md b/README.md
index ec1f1cc..d51126b 100644
--- a/README.md
+++ b/README.md
@@ -1,88 +1,40 @@
 # OpenStreetMap Carto
 
-An implemention of the standard OpenStreetMap mapnik style, in CartoCSS.
+![screenshot](https://raw.github.com/gravitystorm/openstreetmap-carto/master/preview.png)
+
+These are the CartoCSS map stylesheets for the Standard map layer on [OpenStreetMap.org](http://www.openstreetmap.org).
 
 These stylesheets can be used in your own cartography projects, and are designed to be easily
 customised. They work with [TileMill](http://www.mapbox.com/tilemill/) and also with the command-line [CartoCSS](https://github.com/mapbox/carto) processor.
 
-Since August 2013 these stylesheets are used on the OSMF tileservers (tile.openstreetmap.org), and
-are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik)
-
-# Setup
-
-You need OpenStreetMap data loaded into a PostGIS database (see below for [dependencies](https://github.com/gravitystorm/openstreetmap-carto#dependencies)). These stylesheets currently work only with the osm2pgsql defaults (i.e. database name is 'gis', table names are 'planet_osm_point' etc).
-
-It's probably easiest to grab an PBF of OSM data from [metro.teczno.com](http://metro.teczno.com/) or [geofabrik](http://download.geofabrik.de/). Once you've set up your PostGIS database, import with osm2pgsql:
-
-```
-osm2pgsql -d gis ~/path/to/data.osm.pbf --style openstreetmap-carto.style
-```
-
-Additionally you need some shapefiles.
-
-## Scripted download
-
-To download the shapefiles you can run the following script from this directory. No further steps should be needed as the data has been processed and placed in the requisite directories.
-
-```
-sh get-shapefiles.sh
-```
-
-## Manual download
-
-You can also download them manually at the following paths:
-
-* `simplified-land-polygons.shp` [download](http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip)
-* `land-polygon.shp` [download](http://data.openstreetmapdata.com/land-polygons-split-3857.zip)
-* `builtup_area.shp` [download](http://planet.openstreetmap.org/historical-shapefiles/world_boundaries-spherical.tgz) 
-* `ne_110m_admin_0_boundary_lines_land.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip)
-* `ne_10m_populated_places_fixed.shp` [download](http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip) (and see below)
-
-Put these shapefiles at path/to/opentreetmap-carto/data
+Since August 2013 these stylesheets have been used on the OSMF tileservers (tile.openstreetmap.org), and
+are updated from each point release. They supersede the previous [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik).
 
-### Populated places shapefile
+# Installation
 
-The Natural Earth 2.0 populated places shapefile contains data that triggers a bug in mapnik. As
-a workaround we run the shapefile through ogr2ogr to clean up the data.
+You need a PostGIS database populated with OpenStreetMap data in the standard
+osm2pgsql database layout, along with auxillary shapefiles. See [INSTALL.md](INSTALL.md).
 
-```
-ogr2ogr ne_10m_populated_places_fixed.shp ne_10m_populated_places.shp
-```
+# Contributing
 
-See https://github.com/mapnik/mapnik/issues/1605 for more details.
+Contributions to this project are welcome, see [CONTRIBUTING.md](CONTRIBUTING.md)
+for full details.
 
-## Fonts
-The stylesheet depends on a number of openly licensed fonts for support of all the languages found on the map. The package which supplies these fonts on Ubuntu is indicated.
+# Versioning
 
-If a font is missing, it will skip to the next available font which contains those characters. If you are not concerned with a particular language, you do not need its fonts. DejaVu Sans and Unifont are the two required fonts, and included on most systems.
+This project follows a MAJOR.MINOR.PATCH versioning system. In the context of a
+cartographic project you can expect the following:
 
-### Global
-* DejaVu Sans, for most languages (``ttf-dejavu``)
-* Droid Sans Fallback, as a reasonable fallback (``fonts-droid``)
-* Unifont, as a last resort fallback (``ttf-unifont``)
-
-### Southeast Asia
-* Arundina Sans, for Thai (``fonts-sipa-arundina``)
-* Padauk, for Burmese (``fonts-sil-padauk``)
-* Khmer OS Metal Chrieng Regular, for Khmer (``fonts-khmeros``)
-
-## Dependencies
-
-* [TileMill](http://mapbox.com/tilemill) - This is a TileMill project you can copy (or symlink) directly into your Mapbox/project directory
-
-If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapnik XML using the command-line `carto` command.
-
-* [carto](https://github.com/mapbox/carto) >= 0.9.3 (we're using instances with cascading rules)
-* [mapnik](https://github.com/mapnik/mapnik/wiki/Mapnik-Installation) >= 2.1.0
-
----
-
-* [osm2pgsql](http://wiki.openstreetmap.org/wiki/Osm2pgsql) to import your data into a PostGIS database
-* [PostgreSQL](http://www.postgresql.org/)
-* [PostGIS](http://postgis.org/)
-* [ogr2ogr](http://www.gdal.org/) command line GDAL utility for processing vector data. here we use it to work around a encoding bug in the Nautral Earth data.
-* curl, unzip for downloading and decompressing files
-* shapeindex (a companion utility to Mapnik found in the mapnik-utils package) for indexing downloaded shapefiles
+* PATCH: When a patch version is released, there would be no reason not to
+  upgrade. PATCH versions contain only bugfixes e.g. stylesheets won't compile,
+  features are missing by mistake, etc.
+* MINOR: These are routine releases and happen every 1-3 weeks. They will
+  contain changes to what's shown on the map, how they appear, new features
+  added and old features removed. They may rarely contain changes to assets i.e.
+  shapefiles and fonts but will not contain changes that require software or
+  database upgrades.
+* MAJOR: Any change the requires reloading a database, or upgrading software
+  dependecies will trigger a major version change.
 
 # Roadmap
 
@@ -91,63 +43,42 @@ If you aren't using TileMill, you can compile the CartoCSS stylesheets into Mapn
 This was a full re-implementation of the original OSM style, with only a few bugs discovered later. There's been
 no interest in creating further point releases in the v1.x series.
 
-## Easier to wrangle (v2.x)
+## Current work (v2.x)
 
-There are a number of refactorings that can be made to the style, either to fix glitches
-with the current style, or to leverage new features in carto / mapnik to simplify the stylesheets
-with only small changes to the output. It's also appropriate to pull out some of the 'old-skool'
+The v2.x series focuses on refactoring the style, both to to fix glitches and to
+leverage new features in CartoCSS / mapnik to simplify the stylesheets with only
+small changes to the output. It's also appropriate to pull out the 'old-skool'
 tagging methods that are now rarely used.
 
 Care is being taken to not get too clever with variables and expressions. While these often make
 it easier to customise, experience has shown that over-cleverness (e.g. [interpolated entities][cleverness])
 can discourage contributions.
 
-The end goal will be a style that hews close to the current look of the standard style, but is
-much more suitable for further development, and/or forking for third-parties to customise.
+The end goal will be a style that remains familiar but is much more suitable for
+further development, and/or forking for third-parties to customise.
 
-## Tackle the backlog (v3.x)
+## Future (v3.x)
 
-There are over [400 open requests][trac] on trac, some that have been open for years. These need
+There are over [300 open requests][issues], some that have been open for years. These need
 reviewing and dividing into obvious fixes, or additional new features that need some cartographic
 judgement. The work done already in v1.0 and v2.0 will make it much easier to process these.
 
-# CartoCSS Style Guidelines
-
-* Always specify zoom levels as either >= or < . Don't use = or =< or >
-* Open curly braces on the same line, and close on an empty line.
-* One space before and after = etc
-* Two space indents. No tabs.
-* space after : but not before
-* Dashes, not underscores, in layer names
-* Name SQL subqueries after the layer name (but use underscores)
-* Avoid restating defaults, e.g. don't add `point-allow-overlap = false`
-* Avoid repeating the layer name for layers with mutiple attachments, i.e., prefer
-
-```
-#layer {
-  ::outline {
-    line-width: 6;
-    line-color: black;
-  }
-  ::inline {
-    line-width: 2;
-    line-color: white;
-  }
-}
-```
-instead of
-
-```
-#layer::outline {
-    line-width: 6;
-    line-color: black;
-}
-#layer::inline {
-    line-width: 2;
-    line-color: white;
-}
-```
-* Order the selectors in a style-sheet in rough order of importance (i.e., highway=primary, then highway=secondary) and beyond that, add layers that are rendered later (i.e., higher) lower in the file.
-
-[trac]: https://trac.openstreetmap.org/query?component=mapnik&status=!closed&order=changetime&desc=1&max=500
+[issues]: https://github.com/gravitystorm/openstreetmap-carto/issues
 [cleverness]: https://github.com/openstreetmap/mapnik-stylesheets/blob/master/inc/settings.xml.inc.template#L16
+
+# Alternatives
+
+There are many open-source stylesheets written for creating OpenStreetMap-based
+maps using mapnik, many based on this project. Some alternatives are:
+
+* [OSM-Bright](https://github.com/mapbox/osm-bright)
+* [XML-based stylesheets](https://trac.openstreetmap.org/browser/subversion/applications/rendering/mapnik)
+* [osmfr-cartocss](https://github.com/cquest/osmfr-cartocss)
+* [openstreetmap-carto-german](https://github.com/woodpeck/openstreetmap-carto-german)
+
+# Maintainers
+
+* Andy Allan [@gravitystorm](https://github.com/gravitystorm/)
+* Matthijs Melissen [@math1985](https://github.com/math1985/)
+* Paul Norman [@pnorman](https://github.com/pnorman/)
+* Mateusz Konieczny [@matkoniecz](https://github.com/mkoniecz/)
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index c496e12..0000000
--- a/TODO.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# TODO
-
-## Roads
-
-turning circles for living streets
-turning circles for service
-widths for living streets
-highway area casing - should be wider
-highway area casing and fills should be variables
-tunnel casing widths
-tunnel fill widths
-motorway links are narrower than motorways (fair enough) but nothing else is (fix)
-service casing and fill widths
-pedestrian widths
-residential 10-13 width
-highway = road widths
-bridge casing widths
-paths etc widths
-paths etc colours
-railway colours
-paths etc tunnels
-track colours, width and dasharray
-track tunnels
-bridge casing
-bridge colour
-lowzoom widths
-tram width and colour
-guideways width and colour
diff --git a/addressing.mss b/addressing.mss
index a01a46b..452e714 100644
--- a/addressing.mss
+++ b/addressing.mss
@@ -13,7 +13,7 @@
     text-min-distance: 1;
     text-wrap-width: 0;
     text-face-name: @book-fonts;
-    text-fill: #444;
+    text-fill: #666;
     text-size: 9;
   }
 }
@@ -25,7 +25,7 @@
     text-wrap-width: 20;
     text-face-name: @book-fonts;
     text-size: 8;
-    text-fill: #444;
+    text-fill: #666;
     [zoom >= 18] {
       text-size: 9;
     }
@@ -33,9 +33,7 @@
 }
 
 #building-text {
-  [way_area >= 150000][zoom >= 14],
-  [way_area >= 80000][zoom >= 15],
-  [way_area >= 20000][zoom >= 16],
+  [zoom >= 14][way_pixels > 3000],
   [zoom >= 17] {
     text-name: "[name]";
     text-size: 11;
diff --git a/admin.mss b/admin.mss
index dd7bdb9..290b0f6 100644
--- a/admin.mss
+++ b/admin.mss
@@ -1,20 +1,33 @@
 @admin-boundaries: #ac46ac;
 
-#admin-01234 {
+/* For performance reasons, the admin border layers are split into three groups
+for low, middle and high zoom levels.
+For each zoomlevel, all borders come from a single attachment, to handle
+overlapping borders correctly. 
+*/
+
+#admin-low-zoom[zoom < 11],
+#admin-mid-zoom[zoom >= 11][zoom < 13],
+#admin-high-zoom[zoom >= 13] {
   [admin_level = '2'],
   [admin_level = '3'] {
     [zoom >= 4] {
+      background/line-color: white;
+      background/line-width: 0.6;
       line-color: @admin-boundaries;
       line-width: 0.6;
     }
     [zoom >= 7] {
+      background/line-width: 2;
       line-width: 2;
     }
     [zoom >= 10] {
       [admin_level = '2'] {
+        background/line-width: 6;
         line-width: 6;
       }
       [admin_level = '3'] {
+        background/line-width: 5;
         line-width: 5;
         line-dasharray: 4,2;
         line-clip: false;
@@ -23,29 +36,50 @@
   }
   [admin_level = '4'] {
     [zoom >= 4] {
+      background/line-color: white;
+      background/line-width: 0.6;
       line-color: @admin-boundaries;
       line-width: 0.6;
       line-dasharray: 4,3;
       line-clip: false;
     }
     [zoom >= 7] {
+      background/line-width: 1;
       line-width: 1;
     }
     [zoom >= 11] {
+      background/line-width: 3;
       line-width: 3;
     }
   }
+  /*
+  The following code prevents admin boundaries from being rendered on top of
+  each other. Comp-op works on the entire attachment, not on the individual
+  border. Therefore, this code generates an attachment containing a set of
+  @admin-boundaries/white dashed lines (of which only the top one is visible),
+  and with `comp-op: darken` the white part is ignored, while the
+  @admin-boundaries colored part is rendered (as long as the background is not
+  darker than @admin-boundaries).
+  The SQL has `ORDER BY admin_level`, so the boundary with the lowest
+  admin_level is rendered on top, and therefore the only visible boundary.
+  */
   opacity: 0.4;
+  comp-op: darken;
 }
 
-#admin-5678 {
+#admin-mid-zoom[zoom >= 11][zoom < 13],
+#admin-high-zoom[zoom >= 13] {
   [admin_level = '5'][zoom >= 11] {
+    background/line-color: white;
+    background/line-width: 2;
     line-color: @admin-boundaries;
     line-width: 2;
     line-dasharray: 6,3,2,3,2,3;
     line-clip: false;
   }
   [admin_level = '6'][zoom >= 11] {
+    background/line-color: white;
+    background/line-width: 2;
     line-color: @admin-boundaries;
     line-width: 2;
     line-dasharray: 6,3,2,3;
@@ -54,6 +88,8 @@
   [admin_level = '7'],
   [admin_level = '8'] {
     [zoom >= 12] {
+      background/line-color: white;
+      background/line-width: 1.5;
       line-color: @admin-boundaries;
       line-width: 1.5;
       line-dasharray: 5,2;
@@ -61,12 +97,15 @@
     }
   }
   opacity: 0.5;
+  comp-op: darken;
 }
 
-#admin-other {
+#admin-high-zoom[zoom >= 13] {
   [admin_level = '9'],
   [admin_level = '10'] {
     [zoom >= 13] {
+      background/line-color: white;
+      background/line-width: 2;
       line-color: @admin-boundaries;
       line-width: 2;
       line-dasharray: 2,3;
@@ -74,44 +113,58 @@
     }
   }
   opacity: 0.5;
+  comp-op: darken;
 }
 
 #admin-text[zoom >= 16] {
   text-name: "[name]";
   text-face-name: @book-fonts;
   text-fill: @admin-boundaries;
+  text-halo-radius: 1.0;
+  text-halo-fill: rgba(255,255,255,0.6);
   text-placement: line;
+  text-dy: -10;
+}
+
+#nature-reserve-text[zoom >= 13][way_pixels > 192000] {
+  text-name: "[name]";
+  text-face-name: @book-fonts;
+  text-fill: green;
   text-halo-radius: 1.0;
+  text-halo-fill: rgba(255,255,255,0.6);
   text-placement: line;
   text-dy: -10;
 }
 
-#national-park-boundaries {
-  [zoom >= 7] {
-    ::fill [zoom < 13] {
-      opacity: 0.05;
-      polygon-fill: green;
-    }
-    ::line {
-      opacity: 0.15;
-      line-color: green;
-      line-width: 1.5;
-      line-dasharray: 4,2;
-      [zoom >= 10] {
-        line-width: 3;
-        line-dasharray: 6,2;
-        line-join: bevel;
+#nature-reserve-boundaries {
+  [way_pixels > 100][zoom >= 7] {
+    [zoom < 10] {
+      ::fill {
+        opacity: 0.05;
+        polygon-fill: green;
       }
     }
-  }
-  [way_area > 200000000][zoom >= 8][zoom < 12],
-  [zoom >= 11][zoom < 12] {
-    text-name: "[name]";
-    text-size: 8;
-    text-fill: #9c9;
-    text-face-name: @bold-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 14;
-    [zoom >= 11] { text-size: 11; }
+    a/line-width: 1;
+    a/line-offset: -0.5;
+    a/line-color: green;
+    a/line-opacity: 0.15;
+    a/line-join: round;
+    a/line-cap: round;
+    b/line-width: 2;
+    b/line-offset: -1;
+    b/line-color: green;
+    b/line-opacity: 0.15;
+    b/line-join: round;
+    b/line-cap: round;
+    [zoom >= 10] {
+      a/line-width: 2;
+      a/line-offset: -1;
+      b/line-width: 4;
+      b/line-offset: -2;
+    }
+    [zoom >= 14] {
+      b/line-width: 6;
+      b/line-offset: -3;
+    }
   }
 }
diff --git a/amenity-points.mss b/amenity-points.mss
index 42640f7..08ad3cc 100644
--- a/amenity-points.mss
+++ b/amenity-points.mss
@@ -1,622 +1,935 @@
 @marina-text: #576ddf; // also swimming_pool
- at military-text: #99001a;
- at park-text: #2c4b2c;
-
+ at wetland-text: darken(#017fff, 10%); /* Also for marsh */
+ at mud-text: darken(#aea397, 20%);
+ at shop-icon: #ac39ac;
+ at money-icon: #555555;
+ at transportation-icon: #0092da;
+ at transportation-text: #0066ff;
+ at airtransport: #8461C4;
+ at health-color: #da0092;
+ at amenity-brown: #734a08;
+
+ at landcover-font-size: 10;
+ at landcover-font-size-big: 12;
+ at landcover-font-size-bigger: 15;
+ at landcover-wrap-width-size: 25;
+ at landcover-wrap-width-size-big: 35;
+ at landcover-wrap-width-size-bigger: 45;
+ at landcover-face-name: @oblique-fonts;
+
+ at standard-wrap-width: 30;
+
+/* Note that .points is also used in water-features.mss */
 .points {
-  [tourism = 'alpine_hut'][zoom >= 13]::tourism {
+  [feature = 'tourism_alpine_hut'][zoom >= 13] {
     point-file: url('symbols/alpinehut.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'shelter'][zoom >= 16]::amenity {
+  [feature = 'amenity_shelter'][zoom >= 16] {
     point-file: url('symbols/shelter2.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'atm'][zoom >=17]::amenity {
-    point-file: url('symbols/atm2.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_atm'][zoom >= 17] {
+    marker-file: url('symbols/atm.16.svg');
+    marker-fill: @money-icon;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'bank'][zoom >= 17]::amenity {
-    point-file: url('symbols/bank2.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_bank'][zoom >= 17] {
+    marker-file: url('symbols/bank.16.svg');
+    marker-fill: @money-icon;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'bar'][zoom >=17]::amenity {
-    point-file: url('symbols/bar.p.20.png');
-    point-placement: interior;
+  [feature = 'amenity_bar'][zoom >= 17] {
+    marker-file: url('symbols/bar.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'bicycle_rental'][zoom >= 17]::amenity {
-    point-file: url('symbols/rental_bicycle.p.20.png');
-    point-placement: interior;
+  [feature = 'amenity_bicycle_rental'][zoom >= 17] {
+    marker-file: url('symbols/rental_bicycle.16.svg');
+    marker-fill: @transportation-icon;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'bus_stop']::amenity,
-  [highway = 'bus_stop']::highway {
+  [feature = 'highway_bus_stop'] {
     [zoom >= 16] {
-      point-file: url('symbols/bus_stop_small.png');
-      point-placement: interior;
+      marker-file: url('symbols/square.svg');
+      marker-fill: @transportation-icon;
+      marker-placement: interior;
+      marker-width: 6;
+      marker-clip: false;
     }
     [zoom >= 17] {
-      point-file: url('symbols/bus_stop.p.12.png');
+      marker-file: url('symbols/bus_stop.p.12.png');
+      marker-width: 12;
     }
   }
 
-  [amenity = 'bus_station'][zoom >= 16]::amenity {
+  [feature = 'amenity_bus_station'][zoom >= 16] {
     point-file: url('symbols/bus_station.n.16.png');
     point-placement: interior;
   }
 
-  [highway = 'traffic_signals'][zoom >= 17]::highway {
-    point-file: url('symbols/traffic_light.png');
-    point-placement: interior;
+  [feature = 'highway_traffic_signals'][zoom >= 17] {
+    marker-file: url('symbols/traffic_light.svg');
+    marker-fill: #0a0a0a;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'cafe'][zoom >=17]::amenity {
-    point-file: url('symbols/cafe.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_cafe'][zoom >= 17] {
+    marker-file: url('symbols/cafe.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [tourism = 'camp_site'][zoom >= 16]::tourism {
-    point-file: url('symbols/camping.n.16.png');
-    point-placement: interior;
+  [feature = 'tourism_camp_site'][zoom >= 16] {
+    marker-file: url('symbols/camping.16.svg');
+    marker-fill: @transportation-icon;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [highway = 'ford'][zoom >= 16]::highway {
+  [feature = 'highway_ford'][zoom >= 16] {
     point-file: url('symbols/transport_ford.p.16.png');
     point-placement: interior;
   }
 
-  [tourism = 'caravan_site'][zoom >= 16]::tourism {
+  [feature = 'tourism_caravan_site'][zoom >= 16] {
     point-file: url('symbols/caravan_park.p.24.png');
     point-placement: interior;
   }
 
-  [amenity = 'car_sharing'][zoom >= 16]::amenity {
+  [feature = 'amenity_car_sharing'][zoom >= 16] {
     point-file: url('symbols/car_share.p.16.png');
     point-placement: interior;
   }
 
-  [tourism = 'chalet'][zoom >= 17]::tourism {
+  [feature = 'amenity_car_rental'][zoom >= 16] {
+    marker-file: url('symbols/rental_car.16.svg');
+    marker-fill: @transportation-icon;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'tourism_chalet'][zoom >= 17] {
     point-file: url('symbols/chalet.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'cinema'][zoom >= 17]::amenity {
-    point-file: url('symbols/cinema.p.24.png');
-    point-placement: interior;
+  [feature = 'amenity_cinema'][zoom >= 16] {
+    marker-file: url('symbols/cinema.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'fire_station'][zoom >= 17]::amenity {
-    point-file: url('symbols/firestation.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_nightclub'][zoom >= 17] {
+    marker-file: url('symbols/nightclub.18.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'fuel'][zoom >= 17]::amenity {
-    point-file: url('symbols/fuel.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_fire_station'][zoom >= 16] {
+    marker-file: url('symbols/firestation.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [tourism = 'guest_house'][zoom >= 17]::tourism {
-    point-file: url('symbols/guest_house.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_fuel'][zoom >= 17] {
+    marker-file: url('symbols/fuel.16.svg');
+    marker-fill: @transportation-icon;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism {
-    point-file: url('symbols/bandb.p.20.png');
+  [feature = 'tourism_guest_house'][zoom >= 17] {
+    point-file: url('symbols/guest_house.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'hospital'][zoom >= 15]::amenity {
-    point-file: url('symbols/hospital.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_hospital'][zoom >= 15] {
+    marker-file: url('symbols/hospital.16.svg');
+    marker-fill: @health-color;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [tourism = 'hostel'][zoom >= 17]::tourism {
+  [feature = 'tourism_hostel'][zoom >= 17] {
     point-file: url('symbols/hostel.p.20.png');
     point-placement: interior;
   }
 
-  [tourism = 'hotel'][zoom >= 17]::tourism {
+  [feature = 'tourism_hotel'][zoom >= 17] {
     point-file: url('symbols/hotel2.p.20.png');
     point-placement: interior;
   }
 
-  [tourism = 'motel'][zoom >= 17]::tourism {
+  [feature = 'tourism_motel'][zoom >= 17] {
     point-file: url('symbols/motel.p.20.png');
     point-placement: interior;
   }
 
-  [tourism = 'information'][zoom >= 16]::tourism {
+  [feature = 'tourism_information'][zoom >= 17] {
     point-file: url('symbols/information.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'embassy'][zoom >= 17]::amenity {
-    point-file: url('symbols/embassy.png');
-    point-placement: interior;
+  [feature = 'amenity_embassy'][zoom >= 17] {
+    marker-file: url('symbols/embassy.16.svg');
+    marker-fill: @transportation-icon;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'library'][zoom >= 17]::amenity {
+  [feature = 'amenity_library'][zoom >= 16] {
     point-file: url('symbols/library.p.20.png');
     point-placement: interior;
   }
 
-  [amenity = 'courthouse'][zoom > 17]::amenity {
+  [feature = 'amenity_courthouse'][zoom >= 16] {
     point-file: url('symbols/amenity_court.p.20.png');
     point-placement: interior;
   }
 
-  [waterway = 'lock']::waterway,
-  [lock = 'yes']::lock {
-    [zoom >= 15] {
-      point-file: url('symbols/lock_gate.png');
-      point-placement: interior;
-    }
+  [feature = 'amenity_townhall'][zoom >= 16] {
+    marker-file: url('symbols/town_hall.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [man_made = 'mast'][zoom >= 17]::man_made {
-    point-file: url('symbols/communications.p.20.png');
-    point-placement: interior;
+  [feature = 'man_made_mast'][zoom >= 17] {
+    marker-file: url('symbols/communications.16.svg');
+    marker-fill: #555;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [tourism = 'museum'][zoom >= 17]::tourism {
-    point-file: url('symbols/museum.p.16.png');
-    point-placement: interior;
+  [feature = 'tourism_museum'][zoom >= 16] {
+    marker-file: url('symbols/museum.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'parking'][zoom >= 15]::amenity {
-    point-file: url('symbols/parking.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_parking'][zoom >= 16] {
+    marker-file: url('symbols/parking.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @transportation-icon;
     [access != ''][access != 'public'][access != 'yes'] {
-      point-file: url('symbols/parking_private.p.16.png');
+      marker-opacity: 0.33;
     }
   }
 
-  [amenity = 'pharmacy'][zoom >= 17]::amenity {
-    point-file: url('symbols/pharmacy.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_pharmacy'][zoom >= 17] {
+    marker-file: url('symbols/pharmacy.16.svg');
+    marker-fill: @health-color;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'place_of_worship'][zoom >= 16]::amenity {
-    point-file: url('symbols/place_of_worship3.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_doctors'][zoom >= 17] {
+    marker-file: url('symbols/doctors.16.svg');
+    marker-fill: @health-color;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'amenity_dentist'][zoom >= 17] {
+    marker-file: url('symbols/dentist.16.svg');
+    marker-fill: @health-color;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'amenity_place_of_worship'][zoom >= 16] {
+    marker-file: url('symbols/place_of_worship.16.svg');
+    marker-fill: #000000;
+    marker-placement: interior;
+    marker-clip: false;
     [religion = 'christian'] {
-      point-file: url('symbols/christian3.p.14.png');
+      marker-file: url('symbols/christian.16.svg');
+      [denomination = 'jehovahs_witness']{
+        marker-file: url('symbols/place_of_worship.16.svg');
+      }
     }
     [religion = 'muslim'] {
-      point-file: url('symbols/islamic3.p.16.png');
+      marker-file: url('symbols/muslim.16.svg');
     }
     [religion = 'sikh'] {
-      point-file: url('symbols/sikh3.p.16.png');
+      marker-file: url('symbols/sikhist.16.svg');
     }
     [religion = 'jewish'] {
-      point-file: url('symbols/jewish3.p.16.png');
+      marker-file: url('symbols/jewish.16.svg');
     }
     [religion = 'hindu'] {
-      point-file: url('symbols/hindu.png');
+      marker-file: url('symbols/hinduist.16.svg');
     }
     [religion = 'buddhist'] {
-      point-file: url('symbols/buddhist.png');
+      marker-file: url('symbols/buddhist.16.svg');
     }
     [religion = 'shinto'] {
-      point-file: url('symbols/shinto.png');
+      marker-file: url('symbols/shintoist.16.svg');
     }
     [religion = 'taoist'] {
-      point-file: url('symbols/taoist.png');
+      marker-file: url('symbols/taoist.16.svg');
     }
   }
 
-  [amenity = 'police'][zoom >= 17]::amenity {
-    point-file: url('symbols/police.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_police'][zoom >= 16] {
+    marker-file: url('symbols/police.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'post_box'][zoom >= 17]::amenity {
+  [feature = 'amenity_post_box'][zoom >= 17] {
     point-file: url('symbols/post_box.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'post_office'][zoom >= 17]::amenity {
+  [feature = 'amenity_post_office'][zoom >= 17] {
     point-file: url('symbols/post_office.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'pub'][zoom >= 16]::amenity {
-    point-file: url('symbols/pub.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_pub'][zoom >= 17] {
+    marker-file: url('symbols/pub.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'biergarten'][zoom >= 16]::amenity {
-    point-file: url('symbols/biergarten.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_biergarten'][zoom >= 17] {
+    marker-file: url('symbols/biergarten.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'recycling'][zoom >= 16]::amenity {
-    point-file: url('symbols/recycling.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_recycling'][zoom >= 16] {
+    marker-file: url('symbols/recycling.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
+    [access != ''][access != 'yes'] {
+      marker-opacity: 0.33;
+    }
   }
 
-  [amenity = 'restaurant'][zoom >= 17]::amenity {
-    point-file: url('symbols/restaurant.p.16.png');
-    point-placement: interior;
+  [feature = 'amenity_restaurant'][zoom >= 17],
+  [feature = 'amenity_food_court'][zoom >= 17] {
+    marker-file: url('symbols/restaurant.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'fast_food'][zoom >= 17]::amenity {
-    point-file: url('symbols/fast_food.png');
-    point-placement: interior;
+  [feature = 'amenity_fast_food'][zoom >= 17] {
+    marker-file: url('symbols/fast_food.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'telephone'][zoom >= 17]::amenity {
+  [feature = 'amenity_telephone'][zoom >= 17] {
     point-file: url('symbols/telephone.p.16.png');
     point-placement: interior;
   }
 
-  [amenity = 'emergency_phone'][zoom >= 17]::amenity {
+  [feature = 'amenity_emergency_phone'][zoom >= 17] {
     point-file: url('symbols/sosphone.png');
     point-placement: interior;
   }
 
-  [amenity = 'theatre'][zoom >= 17]::amenity {
-    point-file: url('symbols/theatre.p.20.png');
-    point-placement: interior;
+  [feature = 'amenity_theatre'][zoom >= 16] {
+    marker-file: url('symbols/theatre.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'toilets'][zoom >= 17]::amenity {
-    point-file: url('symbols/toilets.p.20.png');
-    point-placement: interior;
+  [feature = 'amenity_toilets'][zoom >= 17] {
+    marker-file: url('symbols/toilets.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'drinking_water'][zoom >= 17]::amenity {
-    point-file: url('symbols/food_drinkingtap.p.20.png');
-    point-placement: interior;
+  [feature = 'amenity_drinking_water'][zoom >= 17] {
+    marker-file: url('symbols/drinking_water.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [amenity = 'prison'][zoom >= 17]::amenity {
-    point-file: url('symbols/amenity_prison.p.20.png');
-    point-placement: interior;
+  [feature = 'amenity_prison'][zoom >= 17] {
+    marker-file: url('symbols/prison.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [tourism = 'viewpoint'][zoom >= 16]::tourism {
+  [feature = 'tourism_viewpoint'][zoom >= 16] {
     point-file: url('symbols/view_point.p.16.png');
     point-placement: interior;
   }
 
-  [man_made = 'water_tower'][zoom >= 17]::man_made {
+  [feature = 'man_made_water_tower'][zoom >= 17] {
     point-file: url('symbols/tower_water.p.20.png');
     point-placement: interior;
   }
 
-  [historic = 'memorial'][zoom >= 17]::historic {
-    point-file: url('symbols/tourist_memorial.p.20.png');
-    point-placement: interior;
+  [feature = 'historic_memorial'][zoom >= 17] {
+    marker-file: url('symbols/tourist_memorial.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [historic = 'archaeological_site'][zoom >= 16]::historic {
+  [feature = 'historic_archaeological_site'][zoom >= 16] {
     point-file: url('symbols/tourist_archaeological2.glow.24.png');
     point-placement: interior;
   }
 
-  [shop = 'supermarket'][zoom >= 16]::shop {
-    point-file: url('symbols/shop_supermarket.p.16.png');
-    point-placement: interior;
+  [feature = 'shop_other'][zoom >= 17] {
+    marker-fill: @shop-icon;
+    marker-width: 6;
+    marker-line-width: 0;
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [shop = 'bakery'][zoom >= 17]::shop {
-    point-file: url('symbols/shop_bakery.p.16.png');
-    point-placement: interior;
+  [feature = 'shop_supermarket'][zoom >= 16] {
+    marker-file: url('symbols/shop_supermarket.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
   }
 
-  [shop = 'butcher'][zoom >= 17]::shop {
-    point-file: url('symbols/shop_butcher.png');
-    point-placement: interior;
+  [feature = 'shop_bakery'][zoom >= 17] {
+    marker-file: url('symbols/shop_bakery.16.svg');
+    marker-fill: @shop-icon;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'shop_books'][zoom >= 17] {
+    marker-file: url('symbols/shop_books.16.svg');
+    marker-fill: @shop-icon;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'shop_butcher'][zoom >= 17] {
+    marker-file: url('symbols/shop_butcher.png');
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [shop = 'clothes']::shop,
-  [shop = 'fashion']::shop {
+  [feature = 'shop_clothes'],
+  [feature = 'shop_fashion'] {
     [zoom >= 17] {
-      point-file: url('symbols/shop_clothes.p.16.png');
-      point-placement: interior;
+      marker-file: url('symbols/shop_clothes.svg');
+      marker-placement: interior;
+      marker-clip: false;
+      marker-fill: @shop-icon;
     }
   }
 
-  [shop = 'convenience'][zoom >= 17]::shop {
-    point-file: url('symbols/shop_convenience.p.16.png');
-    point-placement: interior;
+  [feature = 'shop_convenience'][zoom >= 17] {
+    marker-file: url('symbols/shop_convenience.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
   }
 
-  [shop = 'department_store'][zoom >= 16]::shop {
+  [feature = 'shop_department_store'][zoom >= 16] {
     point-file: url('symbols/department_store.p.16.png');
     point-placement: interior;
   }
 
-  [shop = 'doityourself'][zoom >= 17]::shop {
-    point-file: url('symbols/shop_diy.p.16.png');
-    point-placement: interior;
+  [feature = 'shop_doityourself'][zoom >= 17] {
+    marker-file: url('symbols/shop_diy.p.16.png');
+    marker-placement: interior;
+    marker-clip: false;
   }
 
-  [shop = 'florist'][zoom >= 17]::shop {
-    point-file: url('symbols/florist.p.16.png');
-    point-placement: interior;
+  [feature = 'shop_florist'][zoom >= 17] {
+    marker-file: url('symbols/florist.16.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
   }
 
-  [shop = 'hairdresser'][zoom >= 17]::shop {
-    point-file: url('symbols/shop_hairdresser.p.16.png');
-    point-placement: interior;
+  [feature = 'shop_hairdresser'][zoom >= 17] {
+    marker-file: url('symbols/shop_hairdresser.16.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
+  }
+
+  [feature = 'shop_car'][zoom >= 17] {
+    marker-file: url('symbols/shop_car.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
+  }
+
+  [feature = 'shop_car_repair'][zoom >= 17] {
+    marker-file: url('symbols/shopping_car_repair.16.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
+  }
+
+  [feature = 'shop_bicycle'][zoom >= 17] {
+    marker-file: url('symbols/shopping_bicycle.p.16.png');
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'shop_pet'][zoom >= 17] {
+    marker-file: url('symbols/shop_pet.16.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @shop-icon;
   }
 
-  [shop = 'car'][zoom >= 17]::shop {
-    point-file: url('symbols/shopping_car.p.16.png');
+  [feature = 'leisure_water_park'][zoom >= 17] {
+    point-file: url('symbols/water_park.p.20.png');
     point-placement: interior;
   }
 
-  [shop = 'car_repair'][zoom >= 17]::shop {
-    point-file: url('symbols/shopping_car_repair.p.16.png');
+  [feature = 'leisure_playground'][zoom >= 17] {
+    marker-file: url('symbols/playground.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
+    [access != ''][access != 'yes'] {
+      marker-opacity: 0.33;
+    }
+  }
+
+  [feature = 'leisure_miniature_golf'][zoom >= 17] {
+    point-file: url('symbols/miniature_golf.p.20.png');
     point-placement: interior;
   }
 
-  [shop = 'bicycle'][zoom >= 17]::shop {
-    point-file: url('symbols/shopping_bicycle.p.16.png');
+  [feature = 'leisure_golf_course'][zoom >= 15] {
+    point-file: url('symbols/golf.p.20.png');
     point-placement: interior;
   }
 
-  [leisure = 'playground'][zoom >= 17]::leisure {
-    point-file: url('symbols/playground.p.20.png');
+  [feature = 'tourism_picnic_site'][zoom >= 16] {
+    marker-file: url('symbols/picnic.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'leisure_picnic_table'][zoom >= 17] {
+    marker-file: url('symbols/picnic.16.svg');
+    marker-fill: @amenity-brown;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'leisure_slipway'][zoom >= 17] {
+    point-file: url('symbols/transport_slipway.p.20.png');
     point-placement: interior;
   }
 
-  [tourism = 'picnic_site'][zoom >= 16]::tourism {
-    point-file: url('symbols/picnic.p.16.png');
+  [feature = 'aeroway_helipad'][zoom >= 16] {
+    marker-file: url('symbols/helipad.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @airtransport;
+  }
+
+  [feature = 'aeroway_aerodrome'][zoom >= 10][zoom < 14] {
+    marker-file: url('symbols/aerodrome.svg');
+    marker-placement: interior;
+    marker-clip: false;
+    marker-fill: @airtransport;
+  }
+
+  [feature = 'man_made_lighthouse'][zoom >= 15] {
+    point-file: url('symbols/lighthouse.p.20.png');
     point-placement: interior;
   }
 
-  [leisure = 'picnic_table'][zoom >= 17]::leisure {
-    point-file: url('symbols/picnic.p.16.png');
+  [feature = 'natural_peak'][zoom >= 11] {
+    marker-file: url('symbols/peak.svg');
+    marker-fill: #d08f55;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'natural_volcano'][zoom >= 11] {
+    marker-file: url('symbols/peak.svg');
+    marker-fill: #d40000;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'natural_saddle'][zoom >= 15] {
+    marker-file: url('symbols/saddle.svg');
+    marker-fill: #d08f55;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'natural_cave_entrance'][zoom >= 15] {
+    point-file: url('symbols/poi_cave.p.16.png');
     point-placement: interior;
   }
 
-  [leisure = 'slipway'][zoom >= 17]::leisure {
-    point-file: url('symbols/transport_slipway.p.20.png');
+  [feature = 'natural_spring'][zoom >= 14] {
+    marker-file: url('symbols/spring.svg');
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [feature = 'power_generator']['generator:source' = 'wind'],
+  [feature = 'power_generator'][power_source = 'wind'] {
+    [zoom >= 15] {
+      point-file: url('symbols/power_wind.png');
+      point-placement: interior;
+    }
+  }
+
+  [feature = 'man_made_windmill'][zoom >= 16] {
+    point-file: url('symbols/windmill.png');
     point-placement: interior;
   }
 }
 
+.amenity-low-priority {
+  [railway = 'level_crossing'][zoom >= 14]::railway {
+    point-file: url('symbols/level_crossing.svg');
+    point-placement: interior;
+    [zoom >= 16] {
+      point-file: url('symbols/level_crossing2.svg');
+    }
+  }
+
+  [highway = 'mini_roundabout'][zoom >= 16]::highway {
+    marker-file: url('symbols/mini_roundabout.svg');
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [barrier = 'gate']::barrier {
+    [zoom >= 16] {
+      marker-file: url('symbols/gate.svg');
+      marker-placement: interior;
+      marker-clip: false;
+    }
+  }
+
+  [barrier = 'lift_gate'][zoom >= 16]::barrier {
+    marker-file: url('symbols/liftgate.svg');
+    marker-fill: #3f3f3f;
+    marker-placement: interior;
+    marker-clip: false;
+  }
+
+  [barrier = 'bollard'],
+  [barrier = 'block'] {
+    [zoom >= 16] {
+      marker-width: 3;
+      marker-line-width: 0;
+      marker-fill: #7d7c7c;
+      marker-placement: interior;
+
+      [zoom >= 18] {
+        marker-width: 4;
+      }
+    }
+  }
+}
 
-.text {
-  [place = 'island'][zoom >= 12]::place {
+.text-low-zoom[zoom < 10],
+.text[zoom >= 10] {
+  [feature = 'place_island'][zoom >= 7][way_pixels > 3000],
+  [feature = 'place_island'][zoom >= 16],
+  [feature = 'place_islet'][zoom >= 14][way_pixels > 3000],
+  [feature = 'place_islet'][zoom >= 17] {
     text-name: "[name]";
     text-fill: #000;
-    text-size: 9;
+    text-size: 10;
+    [way_pixels > 12000] { text-size: 12; }
+    [way_pixels > 48000] { text-size: 15; }
     text-face-name: @oblique-fonts;
     text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'pub']::amenity,
-  [amenity = 'restaurant']::amenity,
-  [amenity = 'cafe']::amenity,
-  [amenity = 'fast_food']::amenity,
-  [amenity = 'biergarten']::amenity {
+  [feature = 'amenity_pub'],
+  [feature = 'amenity_restaurant'],
+  [feature = 'amenity_food_court'],
+  [feature = 'amenity_cafe'],
+  [feature = 'amenity_fast_food'],
+  [feature = 'amenity_biergarten'],
+  [feature = 'amenity_bar'],
+  [feature = 'amenity_nightclub'] {
     [zoom >= 17] {
       text-name: "[name]";
-      text-fill: #734a08;
+      text-fill: @amenity-brown;
       text-size: 10;
-      text-dy: 9;
+      text-dy: 11;
       text-face-name: @bold-fonts;
       text-halo-radius: 1;
-      text-wrap-width: 34;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
+      [feature = 'amenity_bar']{
+        text-dy: 13;
+      }
     }
   }
 
-  [amenity = 'bar'][zoom >= 17]::amenity {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #734a08;
-    text-dy: 11;
-    text-face-name: @bold-fonts;
-    text-halo-radius: 1;
-    text-placement: interior;
-  }
-
-  [amenity = 'library']::amenity,
-  [amenity = 'theatre']::amenity,
-  [amenity = 'courthouse']::amenity {
+  [feature = 'amenity_library'],
+  [feature = 'tourism_museum'],
+  [feature = 'amenity_theatre'],
+  [feature = 'amenity_courthouse'],
+  [feature = 'amenity_townhall'],
+  [feature = 'amenity_cinema'] {
     [zoom >= 17] {
       text-name: "[name]";
       text-size: 10;
-      text-fill: #734a08;
-      text-dy: 12;
+      text-fill: @amenity-brown;
+      text-dy: 13;
       text-face-name: @bold-fonts;
+      [feature = 'tourism_museum'] { text-face-name: @book-fonts; }
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
+      [feature = 'tourism_museum'],
+      [feature = 'amenity_theatre'],
+      [feature = 'amenity_cinema'] {
+        text-dy: 11;
+      }
     }
   }
 
-  [amenity = 'cinema'][zoom >= 17]::amenity {
+  [feature = 'amenity_car_rental'][zoom >= 17] {
     text-name: "[name]";
-    text-size: 10;
-    text-fill: #734a08;
-    text-dy: 14;
-    text-face-name: @bold-fonts;
+    text-size: 9;
+    text-fill: @transportation-text;
+    text-dy: 10;
+    text-face-name: @book-fonts;
     text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'parking'][zoom >= 17]::amenity {
+  [feature = 'amenity_parking'][zoom >= 17] {
     text-name: "[name]";
     text-size: 9;
-    text-fill: #0066ff;
+    text-fill: @transportation-text;
     text-dy: 9;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 34;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
     [access != ''][access != 'public'][access != 'yes'] {
       text-fill: #66ccaf;
     }
   }
 
-  [amenity = 'police'][zoom >= 17]::amenity {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #734a08;
-    text-dy: 10;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 30;
-    text-placement: interior;
-  }
 
-  [amenity = 'fire_station'][zoom >= 17]::amenity {
+  [feature = 'amenity_police'][zoom >= 17],
+  [feature = 'amenity_fire_station'][zoom >= 17] {
     text-name: "[name]";
     text-size: 10;
-    text-fill: #734a08;
-    text-dy: 9;
+    text-fill: @amenity-brown;
+    text-dy: 11;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 30;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'place_of_worship'][zoom >= 17]::amenity {
+  [feature = 'amenity_place_of_worship'][zoom >= 17] {
     text-name: "[name]";
     text-size: 10;
     text-fill: #000033;
     text-dy: 12;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 30;
-    text-placement: interior;
-  }
-
-  [natural = 'wood'][zoom >= 15]::natural {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: darken(@wood, 50%);
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 10;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [natural = 'peak']::natural,
-  [natural = 'volcano']::natural {
-    [zoom >= 13] {
+  [feature = 'natural_wood'][is_building = 'no'] {
+    [zoom >= 8][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 10;
-      text-fill: brown;
-      text-dy: 7;
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@wood, 40%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
       text-placement: interior;
-      ele/text-name: "[ele]";
-      ele/text-size: 9;
-      ele/text-fill: brown;
-      ele/text-dy: 6;
-      ele/text-face-name: @oblique-fonts;
-      ele/text-halo-radius: 1;
-      ele/text-placement: interior;
-      [name != ''] {
-        ele/text-dy: 19;
-      }
     }
   }
 
-  [natural = 'cave_entrance'][zoom >= 15]::natural {
+  [feature = 'natural_peak'][zoom >= 13],
+  [feature = 'natural_volcano'][zoom >= 13],
+  [feature = 'natural_saddle'][zoom >= 15] {
     text-name: "[name]";
     text-size: 10;
-    text-fill: brown;
-    text-dy: 9;
+    [feature = 'natural_peak'] { text-fill: darken(#d08f55, 30%); }
+    [feature = 'natural_volcano'] { text-fill: #d40000; }
+    [feature = 'natural_saddle'] { text-fill: darken(#d08f55, 30%); }
+    text-dy: 7;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [historic = 'memorial'][zoom >= 17]::historic {
+  [feature = 'natural_cave_entrance'][zoom >= 15] {
     text-name: "[name]";
-    text-size: 9;
-    text-fill: brown;
-    text-dy: 13;
+    text-size: 10;
+    text-fill: black;
+    text-dy: 11;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [historic = 'archaeological_site'][zoom >= 17]::historic {
+  [feature = 'historic_memorial'][zoom >= 17],
+  [feature = 'historic_archaeological_site'][zoom >= 17] {
     text-name: "[name]";
     text-size: 9;
-    text-fill: brown;
+    text-fill: @amenity-brown;
     text-dy: 15;
+    [feature = 'historic_memorial'] { text-dy: 11; }
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [natural = 'water']::natural,
-  [natural = 'lake']::natural,
-  [landuse = 'reservoir']::landuse,
-  [landuse = 'basin']::landuse {
-    [zoom >= 15] {
+  [feature = 'natural_water'],
+  [feature = 'natural_lake'],
+  [feature = 'landuse_reservoir'],
+  [feature = 'landuse_basin'] {
+    [way_area >= 40000000][zoom >= 10],
+    [way_area >= 10000000][zoom >= 11],
+    [way_area >= 2400000][zoom >= 12],
+    [way_area >= 600000][zoom >= 13],
+    [way_area >= 150000][zoom >= 14],
+    [way_area >= 80000][zoom >= 15],
+    [way_area >= 20000][zoom >= 16],
+    [zoom >= 17] {
       text-name: "[name]";
       text-size: 12;
       text-fill: @water-text;
       text-face-name: @oblique-fonts;
       text-halo-radius: 1;
-      text-wrap-width: 20;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
     }
   }
 
-  [leisure = 'swimming_pool']::leisure {
+  [feature = 'natural_mud'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
     [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: @marina-text;
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: @mud-text;
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
       text-placement: interior;
     }
   }
 
-  [leisure = 'sports_centre']::leisure,
-  [leisure = 'stadium']::leisure,
-  [leisure = 'track']::leisure,
-  [leisure = 'pitch']::leisure {
-    [zoom >= 15] {
+  [feature = 'natural_wetland'][is_building = 'no'],
+  [feature = 'natural_marsh'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@stadium, 30%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: @wetland-text;
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'leisure_swimming_pool'][is_building = 'no'] {
+    [zoom >= 14][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: @marina-text;
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
       text-placement: interior;
     }
   }
 
-  [leisure = 'playground']::leisure,
-  [leisure = 'park']::leisure,
-  [leisure = 'recreation_ground']::leisure,
-  [landuse = 'recreation_ground']::landuse,
-  [landuse = 'conservation']::landuse,
-  [landuse = 'village_green']::landuse,
-  [leisure = 'common']::leisure,
-  [leisure = 'garden']::leisure,
-  [leisure = 'golf_course']::leisure,
-  [leisure = 'nature_reserve']::leisure {
+  [feature = 'leisure_water_park'] {
     [way_area >= 150000][zoom >= 14],
     [way_area >= 80000][zoom >= 15],
     [way_area >= 20000][zoom >= 16],
     [zoom >= 17] {
       text-name: "[name]";
       text-size: 11;
-      text-fill: @park-text;
+      text-fill: darken(@park, 60%);
+      text-dy: 13;
       text-face-name: @book-fonts;
       text-halo-radius: 1;
       text-halo-fill: rgba(255,255,255,0.6);
@@ -625,524 +938,1063 @@
     }
   }
 
-  [landuse = 'quarry']::landuse {
-    [zoom >= 15] {
-      text-name: "[name]";
-      text-size: 9;
-      text-fill: #000;
-      text-face-name: @book-fonts;
-      text-halo-radius: 1;
-      text-wrap-width: 10;
-    }
-  }
 
-  [landuse = 'vineyard']::landuse,
-  [landuse = 'orchard']::landuse  {
-    [zoom >= 15] {
-      text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@vineyard, 50%);
-      text-face-name: @book-fonts;
-      // extra halo needed to overpower the cemetery polygon pattern
-      text-halo-radius: 1.5;
-      text-wrap-width: 10;
-    }
+  [feature = 'leisure_miniature_golf'][zoom >= 17],
+  [feature = 'leisure_golf_course'][zoom >= 15] {
+    text-name: "[name]";
+    text-size: 11;
+    text-fill: darken(@park, 60%);
+    text-face-name: @book-fonts;
+    text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-placement: interior;
+    text-dy: 13;
+    text-wrap-width: 40;
   }
 
-  [landuse = 'cemetery']::landuse,
-  [landuse = 'grave_yard']::landuse  {
-    [zoom >= 15] {
+  [feature = 'leisure_sports_centre'][is_building = 'no'],
+  [feature = 'leisure_stadium'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@cemetery, 50%);
-      text-face-name: @book-fonts;
-      // extra halo needed to overpower the cemetery polygon pattern
-      text-halo-radius: 1.5;
-      text-wrap-width: 10;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@stadium, 30%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'residential']::landuse {
-    [zoom >= 15] {
+  [feature = 'leisure_track'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: #000;
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@track, 40%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'garages']::landuse {
-    [zoom >= 15] {
+  [feature = 'leisure_pitch'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@garages, 50%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@pitch, 40%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'field']::landuse {
-    [zoom >= 15] {
+  [feature = 'leisure_playground'] {
+    [way_area >= 150000][zoom >= 14],
+    [way_area >= 80000][zoom >= 15],
+    [way_area >= 20000][zoom >= 16],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@field, 50%);
+      text-size: 11;
+      text-dy: 13;
+      text-fill: darken(@park, 60%);
       text-face-name: @book-fonts;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
+      text-placement: interior;
+      [access != ''][access != 'yes'] {
+        text-fill: darken(@park, 50%);
+      }
     }
   }
 
-  [landuse = 'meadow']::landuse,
-  [landuse = 'grass']::landuse  {
-    [zoom >= 15] {
+  [feature = 'leisure_park'][is_building = 'no'],
+  [feature = 'leisure_recreation_ground'][is_building = 'no'],
+  [feature = 'landuse_recreation_ground'][is_building = 'no'],
+  [feature = 'landuse_conservation'][is_building = 'no'],
+  [feature = 'landuse_village_green'][is_building = 'no'],
+  [feature = 'leisure_common'][is_building = 'no'],
+  [feature = 'leisure_garden'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@grass, 65%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@park, 60%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'allotments']::landuse {
-    [zoom >= 15] {
+  [feature = 'boundary_national_park'][is_building = 'no'],
+  [feature = 'leisure_nature_reserve'][is_building = 'no'] {
+    [zoom >= 8][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@allotments, 60%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@park, 70%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'forest']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_quarry'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@forest, 50%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@quarry, 60%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'farm']::landuse,
-  [landuse = 'farmland']::landuse,
-  [landuse = 'farmyard']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_vineyard'][is_building = 'no'],
+  [feature = 'landuse_orchard'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@farm, 70%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@vineyard, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1.5; /* extra halo needed to overpower the vineyard polygon pattern */
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'landuse_cemetery'][is_building = 'no'],
+  [feature = 'amenity_grave_yard'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@cemetery, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1.5; /* extra halo needed to overpower the cemetery polygon pattern */
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'landuse_residential'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@residential, 50%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'retail']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_garages'][is_building = 'no'] {
+    [zoom >= 13][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: darken(@retail, 60%);
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@garages, 50%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'industrial']::landuse,
-  [landuse = 'railway']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_meadow'][is_building = 'no'],
+  [feature = 'landuse_grass'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@grass, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'landuse_allotments'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@allotments, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'landuse_forest'][is_building = 'no'] {
+    [zoom >= 8][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@forest, 30%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'landuse_farmyard'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@farmyard, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+  [feature = 'landuse_farm'][is_building = 'no'],
+  [feature = 'landuse_farmland'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@farmland, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'shop_mall'],
+  [feature = 'landuse_retail'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@retail, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'landuse_industrial'][is_building = 'no'],
+  [feature = 'landuse_railway'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
       text-fill: darken(@industrial, 60%);
-      text-face-name: @book-fonts;
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'commercial']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_commercial'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
       text-fill: darken(@commercial, 60%);
-      text-face-name: @book-fonts;
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [landuse = 'brownfield']::landuse,
-  [landuse = 'landfill']::landuse,
-  [landuse = 'greenfield']::landuse,
-  [landuse = 'construction']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_brownfield'][is_building = 'no'],
+  [feature = 'landuse_landfill'][is_building = 'no'],
+  [feature = 'landuse_construction'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
       text-fill: darken(@construction, 50%);
-      text-face-name: @book-fonts;
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [natural = 'bay'][zoom >= 14]::natural {
+  [feature = 'natural_bay'][zoom >= 14] {
     text-name: "[name]";
     text-size: 10;
     text-fill: #6699cc;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [natural = 'spring'][zoom >= 16]::natural {
+  [feature = 'natural_spring'][zoom >= 16] {
     text-name: "[name]";
     text-size: 10;
     text-fill: #6699cc;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
     text-dy: 6;
   }
 
-  [tourism = 'alpine_hut'][zoom >= 15]::tourism {
+  [feature = 'tourism_alpine_hut'][zoom >= 15] {
     text-name: "[name]";
     text-size: 9;
     text-fill: #6699cc;
-    text-dy: 10;
+    text-dy: 11;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
-    [zoom >= 16] {
-      ele/text-name: "[ele]";
-      ele/text-size: 8;
-      ele/text-fill: #6699cc;
-      ele/text-dy: 22;
-      ele/text-face-name: @oblique-fonts;
-      ele/text-halo-radius: 1;
-      ele/text-placement: interior;
-    }
   }
 
-  [amenity = 'shelter'][zoom >= 17]::amenity {
+  [feature = 'amenity_shelter'][zoom >= 17] {
     text-name: "[name]";
     text-size: 9;
     text-fill: #6699cc;
-    text-dy: 10;
+    text-dy: 11;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
-    ele/text-name: "[ele]";
-    ele/text-size: 8;
-    ele/text-fill: #6699cc;
-    ele/text-dy: 22;
-    ele/text-face-name: @oblique-fonts;
-    ele/text-halo-radius: 1;
-    ele/text-placement: interior;
   }
 
-  [amenity = 'bank'][zoom >= 17]::amenity {
+  [feature = 'amenity_bank'][zoom >= 17] {
     text-name: "[name]";
     text-size: 9;
     text-fill: black;
-    text-dy: 9;
+    text-dy: 12;
     text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
     text-face-name: @book-fonts;
   }
 
-  [tourism = 'hotel']::tourism,
-  [tourism = 'motel']::tourism,
-  [tourism = 'hostel']::tourism,
-  [tourism = 'chalet']::tourism {
+  [feature = 'tourism_hotel'],
+  [feature = 'tourism_motel'],
+  [feature = 'tourism_hostel'],
+  [feature = 'tourism_chalet'] {
     [zoom >= 17] {
       text-name: "[name]";
       text-size: 10;
       text-fill: #0066ff;
-      text-dy: 11;
+      text-dy: 13;
       text-face-name: @book-fonts;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
+      [feature = 'tourism_chalet'] {
+        text-dy: 11;
+      }
     }
   }
 
-  [amenity = 'embassy'][zoom >= 17]::amenity {
+  [feature = 'amenity_embassy'][zoom >= 17] {
     text-name: "[name]";
     text-size: 9;
     text-fill: #0066ff;
-    text-dy: 8;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-placement: interior;
-  }
-
-  [tourism = 'guest_house'][zoom >= 17]::tourism {
-    text-name: "[name]";
-    text-size: 8;
-    text-fill: #0066ff;
     text-dy: 10;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [tourism = 'bed_and_breakfast'][zoom >= 17]::tourism {
+  [feature = 'tourism_guest_house'][zoom >= 17] {
     text-name: "[name]";
     text-size: 8;
     text-fill: #0066ff;
-    text-dy: 8;
+    text-dy: 10;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'fuel']::amenity,
-  [amenity = 'bus_station']::amenity {
+  [feature = 'highway_bus_stop'],
+  [feature = 'amenity_fuel'],
+  [feature = 'amenity_bus_station'] {
     [zoom >= 17] {
       text-name: "[name]";
       text-size: 9;
-      text-fill: #0066ff;
-      text-dy: 9;
+      text-fill: @transportation-text;
+      text-dy: 11;
       text-face-name: @book-fonts;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
+      text-placement: interior;
+      [feature = 'highway_bus_stop'] {
+        text-dy: 9;
+      }
     }
   }
 
-  [tourism = 'camp_site'][zoom >= 17]::tourism {
+  [feature = 'tourism_camp_site'][zoom >= 17] {
     text-name: "[name]";
     text-size: 10;
     text-fill: #0066ff;
     text-dy: 15;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 70;
-  }
-
-  [tourism = 'caravan_site'][zoom >= 17]::tourism {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #0066ff;
-    text-dy: 19;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 70;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
+    text-placement: interior;
   }
 
-  [waterway = 'lock'][zoom >= 15]::waterway {
-    text-name: "[name]";
-    text-size: 9;
-    text-dy: 10;
-    text-fill: #0066ff;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 70;
+  [feature = 'tourism_caravan_site'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@campsite, 50%);
+      text-dy: 15;
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
   }
 
-  [leisure = 'marina'][zoom >= 15]::leisure {
+  [feature = 'leisure_marina'][zoom >= 15] {
     text-name: "[name]";
     text-size: 8;
     text-fill: @marina-text;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 30;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
     [zoom >= 17] {
       text-size: 10;
     }
   }
 
-  [tourism = 'theme_park'][zoom >= 14]::tourism {
-    text-name: "[name]";
-    text-size: 8;
-    text-fill: #734a08;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 30;
-    text-placement: interior;
-    [zoom >= 16] {
-      text-size: 10;
+  [feature = 'tourism_theme_park'][is_building = 'no'] {
+    [zoom >= 13][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: @theme_park;
+      text-face-name: @bold-fonts; /*rendered bold to improve visibility since theme parks tend to have crowded backgrounds*/
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
     }
   }
 
-  [tourism = 'museum'][zoom >= 17]::tourism {
+  [feature = 'amenity_prison'][zoom >= 17] {
     text-name: "[name]";
     text-size: 10;
-    text-dy: 10;
-    text-fill: #734a08;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-placement: interior;
-  }
-
-  [amenity = 'prison'][zoom >= 17]::amenity {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #734a08;
-    text-dy: 16;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-placement: interior;
-  }
-
-  [tourism = 'attraction'][zoom >= 16]::tourism {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #660033;
+    text-fill: @amenity-brown;
+    text-dy: 12;
     text-face-name: @book-fonts;
-    text-halo-radius: 2;
-    text-wrap-width: 10;
-    text-placement: interior;
-  }
-
-  [amenity = 'university'][zoom >= 15]::amenity {
-    text-name: "[name]";
-    text-size: 9;
-    text-fill: #000033;
-    text-face-name: @bold-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 16;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'school']::amenity,
-  [amenity = 'college']::amenity {
-    [zoom >= 15] {
+  [feature = 'tourism_attraction'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: #000033;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: #660033;
       text-face-name: @book-fonts;
-      text-halo-radius: 1;
-      text-wrap-width: 14;
+      text-halo-radius: 2;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
       text-placement: interior;
     }
   }
 
-  [amenity = 'kindergarten'][zoom >= 16]::amenity {
-    text-name: "[name]";
-    text-size: 8;
-    text-fill: #000033;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 14;
-    text-placement: interior;
+  [feature = 'amenity_kindergarten'][is_building = 'no'],
+  [feature = 'amenity_school'][is_building = 'no'],
+  [feature = 'amenity_college'][is_building = 'no'],
+  [feature = 'amenity_university'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@school, 70%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
   }
 
-  [man_made = 'lighthouse'][zoom >= 15]::man_made {
+  [feature = 'man_made_lighthouse'][zoom >= 15] {
     text-name: "[name]";
     text-size: 9;
-    text-fill: #000033;
+    text-fill: #6699cc;
     text-dy: 16;
     text-face-name: @book-fonts;
     text-halo-radius: 2;
-    text-wrap-width: 12;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [man_made = 'windmill'][zoom >= 17]::man_made {
+  [feature = 'man_made_windmill'][zoom >= 17] {
     text-name: "[name]";
     text-size: 9;
-    text-fill: #734a08;
+    text-fill: @amenity-brown;
     text-dy: 12;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 20;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'hospital'][zoom >= 16]::amenity {
+  [feature = 'amenity_hospital'][zoom >= 16] {
     text-name: "[name]";
-    text-fill: #da0092;
+    text-fill: @health-color;
     text-size: 8;
     text-dy: 10;
     text-face-name: @book-fonts;
     text-halo-radius: 2;
-    text-wrap-width: 24;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
     text-placement: interior;
   }
 
-  [amenity = 'pharmacy'][zoom >= 17]::amenity {
-    text-name: "[name]";
-    text-size: 8;
-    text-dy: 10;
-    text-fill: #da0092;
-    text-face-name: @book-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 12;
-    text-placement: interior;
+  [feature = 'amenity_pharmacy'],
+  [feature = 'amenity_doctors'],
+  [feature = 'amenity_dentist'] {
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: 8;
+      text-dy: 12;
+      text-fill: @health-color;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @standard-wrap-width;
+      text-placement: interior;
+    }
   }
 
-  [shop = 'bakery']::shop,
-  [shop = 'clothes']::shop,
-  [shop = 'fashion']::shop,
-  [shop = 'convenience']::shop,
-  [shop = 'doityourself']::shop,
-  [shop = 'hairdresser']::shop,
-  [shop = 'butcher']::shop,
-  [shop = 'car']::shop,
-  [shop = 'car_repair']::shop,
-  [shop = 'bicycle']::shop,
-  [shop = 'florist']::shop {
+  [feature = 'shop_bakery'],
+  [feature = 'shop_books'],
+  [feature = 'shop_clothes'],
+  [feature = 'shop_fashion'],
+  [feature = 'shop_convenience'],
+  [feature = 'shop_doityourself'],
+  [feature = 'shop_hairdresser'],
+  [feature = 'shop_butcher'],
+  [feature = 'shop_car'],
+  [feature = 'shop_car_repair'],
+  [feature = 'shop_bicycle'],
+  [feature = 'shop_florist'],
+  [feature = 'shop_pet'],
+  [feature = 'shop_other']{
     [zoom >= 17] {
       text-name: "[name]";
-      text-size: 8;
-      text-dy: 10;
+      text-size: 10;
+      text-dy: 12;
       text-fill: #939;
       text-face-name: @book-fonts;
-      text-halo-radius: 1;
-      text-wrap-width: 12;
+      text-halo-radius: 1.5;
+      text-halo-fill: rgba(255, 255, 255, 0.6);
+      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
     }
   }
 
-  [shop = 'supermarket']::shop,
-  [shop = 'department_store']::shop {
+  [feature = 'shop_supermarket'],
+  [feature = 'shop_department_store'] {
     [zoom >= 16] {
       text-name: "[name]";
-      text-size: 9;
-      text-dy: 9;
+      text-size: 10;
+      text-dy: 12;
       text-fill: #939;
       text-face-name: @book-fonts;
-      text-halo-radius: 1;
-      text-wrap-width: 20;
+      text-halo-radius: 1.5;
+      text-halo-fill: rgba(255, 255, 255, 0.6);
+      text-wrap-width: @standard-wrap-width;
       text-placement: interior;
     }
   }
 
-  [military = 'danger_area'][zoom >= 12]::military {
-    text-name: "[name]";
-    text-size: 9;
-    text-fill: @military-text;
-    text-face-name: @bold-fonts;
-    text-halo-radius: 1;
-    text-wrap-width: 10;
-    text-placement: interior;
+  [feature = 'military_danger_area'][is_building = 'no'] {
+    [zoom >= 9][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@danger_area, 40%);
+      text-face-name: @bold-fonts;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
   }
 
-  [landuse = 'military']::landuse {
-    [zoom >= 15] {
+  [feature = 'landuse_military'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
       text-name: "[name]";
-      text-size: 9;
-      text-fill: @military-text;
-      text-face-name: @book-fonts;
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@military, 40%);
+      text-face-name: @landcover-face-name;
       text-halo-radius: 1;
-      text-wrap-width: 10;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
       text-placement: interior;
     }
   }
 
-  [aeroway = 'gate'][zoom >= 17]::aeroway {
+  [feature = 'aeroway_gate'][zoom >= 17] {
     text-name: "[ref]";
     text-size: 10;
     text-fill: #aa66cc;
     text-face-name: @book-fonts;
     text-halo-radius: 1;
-    text-wrap-width: 10;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: @standard-wrap-width;
+    text-placement: interior;
+  }
+
+  [feature = 'tourism_zoo'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@zoo, 40%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'power_station'][is_building = 'no'][zoom >= 10],
+  [feature = 'power_generator'][is_building = 'no'][zoom >= 10],
+  [feature = 'power_sub_station'][is_building = 'no'][zoom >= 13],
+  [feature = 'power_substation'][is_building = 'no'][zoom >= 13]{
+    [way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@power, 40%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'natural_scree'][is_building = 'no'],
+  [feature = 'natural_shingle'][is_building = 'no'],
+  [feature = 'natural_bare_rock'][is_building = 'no'] {
+    [zoom >= 9][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@bare_ground, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'natural_sand'][is_building = 'no'] {
+    [zoom >= 9][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@sand, 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'natural_heath'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@heath, 40%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+
+  [feature = 'natural_grassland'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@grassland, 60%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'natural_scrub'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@scrub, 60%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'aeroway_apron'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@apron, 60%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'natural_beach'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@beach, 60%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'highway_services'][is_building = 'no'],
+  [feature = 'highway_rest_area'][is_building = 'no'] {
+    [zoom >= 10][way_pixels > 3000],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: darken(@rest_area, 40%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'natural_glacier'][is_building = 'no'] {
+    [zoom >= 8][way_pixels > 10000],
+    [zoom >= 10][way_pixels > 750],
+    [zoom >= 17] {
+      text-name: "[name]";
+      text-size: @landcover-font-size;
+      [way_pixels > 12000] { text-size: @landcover-font-size-big; }
+      [way_pixels > 48000] { text-size: @landcover-font-size-bigger; }
+      text-fill: mix(darken(@glacier, 40%), darken(@glacier-line, 30%), 50%);
+      text-face-name: @landcover-face-name;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: @landcover-wrap-width-size;
+      [way_pixels > 12000] {text-wrap-width: @landcover-wrap-width-size-big; }
+      [way_pixels > 48000] {text-wrap-width: @landcover-wrap-width-size-bigger; }
+      text-placement: interior;
+    }
+  }
+
+  [feature = 'aeroway_helipad'][zoom >= 16] {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: @airtransport;
+    text-dy: -10;
+    text-face-name: @bold-fonts;
+    text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
     text-placement: interior;
+    text-wrap-width: 30;
+  }
+
+  [feature = 'aeroway_aerodrome'][zoom >= 10][zoom < 14] {
+    text-name: "[name]";
+    text-size: 8;
+    text-fill: darken(@airtransport, 15%);
+    text-dy: -10;
+    text-face-name: @oblique-fonts;
+    text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-placement: interior;
+    text-wrap-width: 30;
+  }
+}
+
+#trees [zoom >= 16] {
+  ::canopy {
+    opacity: 0.3;
+    [natural = 'tree_row'] {
+      line-color: green;
+      line-cap: round;
+      line-width: 2.5;
+      [zoom >= 17] {
+        line-width: 5;
+      }
+      [zoom >= 18] {
+        line-width: 10;
+      }
+      [zoom >= 19] {
+        line-width: 15;
+      }
+      [zoom >= 20] {
+        line-width: 30;
+      }
+    }
+    [natural = 'tree'] {
+      marker-fill: green;
+      marker-allow-overlap: true;
+      marker-line-width: 0;
+      marker-width: 2.5;
+      marker-height: 2.5;
+      [zoom >= 17] {
+        marker-width: 5;
+        marker-height: 5;
+      }
+      [zoom >= 18] {
+        marker-width: 10;
+        marker-height: 10;
+      }
+      [zoom >= 19] {
+        marker-width: 15;
+        marker-height: 15;
+      }
+      [zoom >= 20] {
+        marker-width: 30;
+        marker-height: 30;
+      }
+    }
+  }
+  [natural = 'tree']::trunk {
+    [zoom >= 18] {
+      trunk/marker-fill: #b27f36;
+      trunk/marker-allow-overlap: true;
+      trunk/marker-line-width: 0;
+      trunk/marker-width: 2;
+      trunk/marker-height: 2;    
+    }
+    [zoom >= 19] {
+      trunk/marker-width: 3;
+      trunk/marker-height: 3;    
+    }
+    [zoom >= 20] {
+      trunk/marker-width: 6;
+      trunk/marker-height: 6;    
+    }
   }
 }
diff --git a/amenity-symbols.mss b/amenity-symbols.mss
deleted file mode 100644
index f1699da..0000000
--- a/amenity-symbols.mss
+++ /dev/null
@@ -1,112 +0,0 @@
-.symbols {
-  [aeroway = 'helipad'][zoom >= 16]::aeroway {
-    point-file: url('symbols/helipad.p.16.png');
-    text-name: "[name]";
-    text-size: 8;
-    text-fill: #6692da;
-    text-dy: -10;
-    text-face-name: @bold-fonts;
-    text-halo-radius: 1;
-    text-placement: interior;
-  }
-
-  [aeroway = 'aerodrome'][zoom >= 10][zoom < 13]::aeroway {
-    [zoom < 11] {
-      point-file: url('symbols/aerodrome.p.16.png');
-      text-dy: -12;
-    }
-    text-name: "[name]";
-    text-size: 8;
-    text-fill: #6692da;
-    text-face-name: @oblique-fonts;
-    text-halo-radius: 1;
-    text-placement: interior;
-  }
-
-  [railway = 'level_crossing'][zoom >= 14]::railway {
-    point-file: url('symbols/level_crossing.png');
-    point-placement: interior;
-    [zoom >= 16] {
-      point-file: url('symbols/level_crossing2.png');
-    }
-  }
-
-  [man_made = 'lighthouse'][zoom >= 15]::man_made {
-    point-file: url('symbols/lighthouse.p.20.png');
-    point-placement: interior;
-  }
-
-  [natural = 'peak'][zoom >= 11]::natural {
-    point-file: url('symbols/peak.png');
-    point-placement: interior;
-  }
-
-  [natural = 'volcano'][zoom >= 11]::natural {
-    point-file: url('symbols/volcano.png');
-    point-placement: interior;
-  }
-
-  [natural = 'cave_entrance'][zoom >= 15]::natural {
-    point-file: url('symbols/poi_cave.p.16.png');
-    point-placement: interior;
-  }
-
-  [natural = 'spring'][zoom >= 14]::natural {
-    point-file: url('symbols/spring.png');
-    point-placement: interior;
-  }
-
-  [natural = 'tree'][zoom >= 16]::natural {
-    point-file: url('symbols/tree.png');
-    point-ignore-placement: true;
-    point-placement: interior;
-    [zoom >= 17] {
-      point-file: url('symbols/tree2.png');
-    }
-  }
-
-  [power = 'generator']['generator:source' = 'wind']::power,
-  [power = 'generator'][power_source = 'wind']::power,
-  [man_made = 'power_wind'] {
-    [zoom >= 15] {
-      point-file: url('symbols/power_wind.png');
-      point-placement: interior;
-    }
-  }
-
-  [man_made = 'windmill'][zoom >= 16]::man_made {
-    point-file: url('symbols/windmill.png');
-    point-placement: interior;
-  }
-
-  [man_made = 'mast'][zoom >= 17]::man_made {
-    point-file: url('symbols/communications.p.20.png');
-    point-placement: interior;
-  }
-
-  [highway = 'mini_roundabout'][zoom >= 15]::highway {
-    point-file: url('symbols/mini_round.png');
-    point-placement: interior;
-  }
-
-  [highway = 'gate']::highway,
-  [barrier = 'gate']::barrier {
-    [zoom >= 15] {
-      point-file: url('symbols/gate2.png');
-      point-placement: interior;
-    }
-  }
-
-  [barrier = 'lift_gate'][zoom >= 16]::barrier {
-    point-file: url('symbols/liftgate.png');
-    point-placement: interior;
-  }
-
-  [barrier = 'bollard'],
-  [barrier = 'block'] {
-    [zoom >= 16] {
-      point-file: url('symbols/bollard.png');
-      point-placement: interior;
-    }
-  }
-}
diff --git a/buildings.mss b/buildings.mss
index 9e988c4..b1ea7df 100644
--- a/buildings.mss
+++ b/buildings.mss
@@ -1,52 +1,46 @@
-#buildings-lz {
-  [zoom >= 10] {
-    [railway = 'station']::railway,
-    [building = 'station'] {
-      polygon-fill: #d4aaaa;
-      polygon-clip: false;
-    }
+ at building-fill: #d9d0c9; //Lch(84, 5, 70)
+ at building-line: darken(@building-fill, 15%);
+ at building-low-zoom: darken(@building-fill, 4%);
 
-    [building = 'supermarket'] {
-      polygon-fill: pink;
-      polygon-opacity: 0.5;
-      polygon-clip: false;
-    }
+ at building-major-fill: darken(@building-fill, 20%);
+ at building-major-line: darken(@building-major-fill, 25%);
+
+ at building-aeroway-fill: #cc99ff;
+ at building-aeroway-line: darken(@building-aeroway-fill,15%);
 
-    [amenity = 'place_of_worship']::amenity {
-      polygon-opacity: 0.5;
-      polygon-fill: #777;
-      polygon-clip: false;
-      [zoom >= 15] {
-        polygon-opacity: 0.9;
-        polygon-fill: #aaa;
-        line-width: 0.3;
-        line-color: #111;
-      }
-    }
-  }
-}
 
 #buildings {
-  [building = 'INT-light'][zoom >= 12] {
-    polygon-fill: #bca9a9;
-    polygon-opacity: 0.7;
+  [zoom >= 12] {
+    polygon-fill: @building-low-zoom;
     polygon-clip: false;
-  }
-  [building != 'INT-light'][building != ''][zoom >= 12] {
-    polygon-fill: #bca9a9;
-    polygon-opacity: 0.9;
-    polygon-clip: false;
-    [zoom >= 16] {
-      line-color: #330066;
-      line-width: 0.2;
+    [zoom >= 15] {
+      line-color: @building-line;
+      polygon-fill: @building-fill;
+      line-width: .75;
+      line-clip: false;
     }
   }
-  [aeroway = 'terminal'][zoom >= 12]::aeroway {
-    polygon-fill: #cc99ff;
-    polygon-clip: false;
-    [zoom >= 14] {
-      line-color: #330066;
-      line-width: 0.2;
+}
+
+#buildings-major {
+  [zoom >= 12] {
+    [aeroway = 'terminal'] {
+      polygon-fill: @building-aeroway-fill;
+      polygon-clip: false;
+      [zoom >= 15] {
+        line-width: .75;
+        line-clip: false;
+        line-color: @building-aeroway-line;
+      }
+    }
+    [amenity = 'place_of_worship'] {
+      polygon-fill: @building-major-fill;
+      polygon-clip: false;
+      [zoom >= 15] {
+        line-width: .75;
+        line-clip: false;
+        line-color: @building-major-line;
+      }
     }
   }
 }
diff --git a/ferry-routes.mss b/ferry-routes.mss
index 57145df..be29bd7 100644
--- a/ferry-routes.mss
+++ b/ferry-routes.mss
@@ -1,11 +1,33 @@
+ at ferry-route: #66f;
+ at ferry-route-text: @ferry-route;
+
 #ferry-routes {
   [zoom >= 7] {
-    line-color: #66f;
+    /* background prevents problems with overlapping ferry-routes, see #457 */
+    background/line-color: @water-color;
+    background/line-width: 1; /* Needs to be a bit wider than the route itself because of antialiasing */
+    line-color: @ferry-route;
     line-width: 0.4;
     line-dasharray: 4,4;
     [zoom >= 11] {
+      background/line-width: 1;
       line-width: 0.8;
       line-dasharray: 6,6;
     }
   }
 }
+
+#ferry-routes-text {
+  [zoom >= 13] {
+    text-name: "[name]";
+    text-face-name: @book-fonts;
+    text-placement: line;
+    text-fill: @ferry-route-text;
+    text-spacing: 1000;
+    text-size: 8;
+    [zoom >= 14] { text-size: 10; }
+    text-halo-radius: 1;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-dy: -8;
+  }
+}
diff --git a/get-shapefiles.sh b/get-shapefiles.sh
index e21945f..65fc306 100755
--- a/get-shapefiles.sh
+++ b/get-shapefiles.sh
@@ -1,7 +1,7 @@
-#!/bin/bash
+#!/bin/sh
 set -e -u
 
-UNZIP_OPTS=-qqu
+UNZIP_OPTS=-qqun
 
 # create and populate data dir
 
@@ -22,25 +22,48 @@ tar -xzf data/world_boundaries-spherical.tgz -C data/
 echo "downloading simplified-land-polygons-complete-3857..."
 curl -z "data/simplified-land-polygons-complete-3857.zip" -L -o "data/simplified-land-polygons-complete-3857.zip" "http://data.openstreetmapdata.com/simplified-land-polygons-complete-3857.zip"
 echo "simplified-land-polygons-complete-3857..."
-unzip $UNZIP_OPTS data/simplified-land-polygons-complete-3857.zip simplified-land-polygons-complete-3857/simplified_land_polygons.{shp,shx,prj,dbf,cpg} -d data/
+unzip $UNZIP_OPTS data/simplified-land-polygons-complete-3857.zip \
+  simplified-land-polygons-complete-3857/simplified_land_polygons.shp \
+  simplified-land-polygons-complete-3857/simplified_land_polygons.shx \
+  simplified-land-polygons-complete-3857/simplified_land_polygons.prj \
+  simplified-land-polygons-complete-3857/simplified_land_polygons.dbf \
+  simplified-land-polygons-complete-3857/simplified_land_polygons.cpg \
+  -d data/
 
 # ne_110m_admin_0_boundary_lines_land
 echo "dowloading ne_110m_admin_0_boundary_lines_land..."
 curl -z data/ne_110m_admin_0_boundary_lines_land.zip -L -o data/ne_110m_admin_0_boundary_lines_land.zip http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/110m/cultural/ne_110m_admin_0_boundary_lines_land.zip
 echo "expanding ne_110m_admin_0_boundary_lines_land..."
-unzip $UNZIP_OPTS data/ne_110m_admin_0_boundary_lines_land.zip -d data/ne_110m_admin_0_boundary_lines_land/
+unzip $UNZIP_OPTS data/ne_110m_admin_0_boundary_lines_land.zip \
+  ne_110m_admin_0_boundary_lines_land.shp \
+  ne_110m_admin_0_boundary_lines_land.shx \
+  ne_110m_admin_0_boundary_lines_land.prj \
+  ne_110m_admin_0_boundary_lines_land.dbf \
+  -d data/ne_110m_admin_0_boundary_lines_land/
 
 # ne_10m_populated_places
 echo "dowloading ne_10m_populated_places..."
 curl -z data/ne_10m_populated_places.zip -L -o data/ne_10m_populated_places.zip http://www.naturalearthdata.com/http//www.naturalearthdata.com/download/10m/cultural/ne_10m_populated_places.zip
 echo "expanding ne_10m_populated_places..."
-unzip $UNZIP_OPTS data/ne_10m_populated_places.zip -d data/ne_10m_populated_places/
+unzip $UNZIP_OPTS data/ne_10m_populated_places.zip \
+  ne_10m_populated_places.shp \
+  ne_10m_populated_places.shx \
+  ne_10m_populated_places.prj \
+  ne_10m_populated_places.dbf \
+  ne_10m_populated_places.cpg \
+  -d data/ne_10m_populated_places/
 
 # land-polygons-split-3857
 echo "dowloading land-polygons-split-3857..."
 curl -z "data/land-polygons-split-3857.zip" -L -o "data/land-polygons-split-3857.zip" "http://data.openstreetmapdata.com/land-polygons-split-3857.zip"
 echo "expanding land-polygons-split-3857..."
-unzip $UNZIP_OPTS data/land-polygons-split-3857.zip -d data/
+unzip $UNZIP_OPTS data/land-polygons-split-3857.zip \
+  land-polygons-split-3857/land_polygons.shp \
+  land-polygons-split-3857/land_polygons.shx \
+  land-polygons-split-3857/land_polygons.prj \
+  land-polygons-split-3857/land_polygons.dbf \
+  land-polygons-split-3857/land_polygons.cpg \
+  -d data/
 
 
 #process populated places
diff --git a/landcover.mss b/landcover.mss
index b460703..5a7ac24 100644
--- a/landcover.mss
+++ b/landcover.mss
@@ -3,10 +3,10 @@
 @forest: #a0cf85;
 @grass: #cfeca8; // also meadow, common, garden, village_green, conservation
 @golf_course: #b5e3b5;
- at natural: #c6e4b4; // also grassland
- at park: #b6fdb6; // also recreation_ground
+ at park: #cdf7c9; // also recreation_ground
 @wood: #aed1a0;
- at vineyard: #abdf96;
+ at vineyard: #b3e2a8;
+ at grassland: #c6e4b4;
 
 // --- sports ---
 
@@ -14,127 +14,181 @@
 @track: #74dcba;
 @pitch: #8ad3af;
 
+// --- "base" landuses ---
+
+ at residential: #E1E1E1;      // Lch(89,0,0)
+ at residential-line: #B9B9B9; // Lch(75,0,0)
+ at retail: #FFD6D1;           // Lch(89,16,30)
+ at retail-line: #D99C95;      // Lch(70,25,30)
+ at commercial: #F2DAD9;       // Lch(89,8.5,25)
+ at commercial-line: #D1B2B0;  // Lch(75,12,25)
+ at industrial: #EBDBE8;       // Lch(89,9,330)
+ at industrial-line: #C6B3C3;  // Lch(75,11,330)
+ at railway: @industrial;
+ at railway-line: @industrial-line;
+ at farmland: #EDDDC9;         // Lch(89,12,80) (Also used for farm)
+ at farmland-line: #C8B69E;    // Lch(75,15,80)
+
+ at farmyard: #EFD6B5;         // Lch(87,20,80)
+ at farmyard-line: #D1B48C;    // Lch(75,25,80)
+
 // --- Other ----
 
- at aerodrome: #ccc;
+ at aerodrome: #e9e7e2;
 @allotments: #e5c7ab;
 @apron: #e9d1ff;
- at attraction: #f2caea;
- at barracks: #ff8f8f;
- at campsite: #ccff99; // also caravan_site, picnic_site
+ at bare_ground: #eee5dc;
+ at campsite: #def6c0; // also caravan_site, picnic_site
 @cemetery: #aacbaf; // also grave_yard
- at construction: #9d9d6c;
- at commercial: #efc8c8;
+ at construction: #b6b592;
 @danger_area: pink;
- at desert: #e3b57a;
- at field: #660;
- at garages: #996;
+ at garages: #dfddce;
 @heath: #d6d99f;
- at industrial: #dfd1d6; // also railway
- at farmyard: #ddbf92;
- at farm: #ead8bd; // also farmland
 @parking: #f7efb7;
+ at place_of_worship: #cdccc9;
+ at place_of_worship_outline: #111;
 @playground: #ccfff1;
 @power: #bbb;
 @rest_area: #efc8c8; // also services
- at retail: #f1dada;
- at residential: #ddd;
- at sand: #ffdf88;
+ at sand: #f5e9c6;
 @school: #f0f0d8; // also university, college, hospital, kindergarten
-
-#landcover {
+ at station: #d4aaaa;
+ at scrub: #b5e3b5;
+ at orchard: #9ed88f;
+ at theme_park: #734a08;
+ at quarry: #c5c3c3;
+ at military: #f55;
+ at zoo: #a4f3a1;
+ at beach: #fff1ba;
+
+#landcover-low-zoom[zoom < 10],
+#landcover[zoom >= 10] {
  [feature = 'leisure_swimming_pool'][zoom >= 14] {
     polygon-fill: @water-color;
-    line-color: blue;
+    line-color: saturate(darken(@water-color, 40%), 30%);
     line-width: 0.5;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'leisure_playground'][zoom >= 13] {
     polygon-fill: @playground;
-    line-color: #666;
+    line-color: saturate(darken(@playground, 60%), 30%);
     line-width: 0.3;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'tourism_camp_site'],
   [feature = 'tourism_caravan_site'],
   [feature = 'tourism_picnic_site'] {
-    [zoom >= 13] {
+    [zoom >= 10] {
       polygon-fill: @campsite;
-      polygon-opacity: 0.5;
-      line-color: #666;
+      line-color: saturate(darken(@campsite, 60%), 30%);
       line-width: 0.3;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
-  [feature = 'tourism_attraction'][zoom >= 10] {
-    polygon-fill: @attraction;
-  }
-
-  [feature = 'landuse_quarry'][zoom >= 11] {
-    polygon-pattern-file: url('symbols/quarry2.png');
+  [feature = 'landuse_quarry'][zoom >= 10] {
+    polygon-fill: @quarry;
+    polygon-pattern-file: url('symbols/quarry.png');
     line-width: 0.5;
     line-color: grey;
+    [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
   }
 
   [feature = 'landuse_vineyard'] {
-    [zoom >= 10][zoom < 13] {
+    [zoom >= 10] {
       polygon-fill: @vineyard;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
     [zoom >= 13] {
       polygon-pattern-file: url('symbols/vineyard.png');
+      [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
     }
   }
 
   [feature = 'landuse_orchard'][zoom >= 10] {
+    polygon-fill: @orchard;
     polygon-pattern-file: url('symbols/orchard.png');
+    polygon-pattern-alignment: global;
+    [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
   }
 
   [feature = 'landuse_cemetery'],
-  [feature = 'landuse_grave_yard'],
   [feature = 'amenity_grave_yard'] {
-    [zoom >= 10][zoom < 14] {
+    [zoom >= 10] {
       polygon-fill: @cemetery;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
     [zoom >= 14] {
-      [religion = 'jewish'] { polygon-pattern-file: url('symbols/cemetery_jewish.18.png'); }
-      [religion = 'christian'] { polygon-pattern-file: url('symbols/grave_yard.png'); }
+      [religion = 'jewish'] { polygon-pattern-file: url('symbols/grave_yard_jewish.png'); }
+      [religion = 'christian'] { polygon-pattern-file: url('symbols/grave_yard_christian.png'); }
       [religion = 'INT-generic'] { polygon-pattern-file: url('symbols/grave_yard_generic.png'); }
+      [religion = 'jewish'],
+      [religion = 'christian'],
+      [religion = 'INT-generic'] {
+        [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+        [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
+      }
     }
   }
 
-  [feature = 'landuse_residential'][zoom >= 10] {
-    polygon-fill: @residential;
-  }
-
-  [feature = 'landuse_garages'][zoom >= 12] {
-    polygon-fill: @garages;
-    polygon-opacity: 0.2;
+  [feature = 'amenity_place_of_worship'] {
+    polygon-fill: @place_of_worship;
+    polygon-clip: false;
+    [zoom >= 15] {
+      line-color: @place_of_worship_outline;
+      line-width: 0.3;
+      line-clip: false;
+    }
   }
 
-  [feature = 'military_barracks'][zoom >= 10] {
-    polygon-fill: @barracks;
+  [feature = 'amenity_prison'][zoom >= 10] {
+    polygon-pattern-file: url('symbols/grey_vertical_hatch.png');
+    polygon-pattern-alignment: global;
+    line-color: #888;
+    line-width: 3;
+    line-opacity: 0.329;
   }
 
-  [feature = 'landuse_field'],
-  [feature = 'natural_field'] {
-    [zoom >= 10] {
-      polygon-fill: @field;
-      polygon-opacity: 0.2;
-      [zoom >= 14] {
-        line-width: 0.3;
-        line-opacity: 0.4;
-        line-color: #660;
+  [feature = 'landuse_residential'][zoom >= 10] {
+    polygon-fill: @residential;
+    [zoom >= 16] {
+      line-width: .5;
+      line-color: @residential-line;
+      [name != ''] {
+        line-width: 0.7;
       }
     }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
+  }
+
+  [feature = 'landuse_garages'][zoom >= 13] {
+    polygon-fill: @garages;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'military_danger_area'] {
     [zoom >= 9][zoom < 11] {
       polygon-fill: @danger_area;
       polygon-opacity: 0.3;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
     [zoom >= 11] {
       polygon-pattern-file: url('symbols/danger.png');
+      [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
     }
   }
 
@@ -142,6 +196,8 @@
   [feature = 'landuse_grass'] {
     [zoom >= 10] {
       polygon-fill: @grass;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
@@ -149,52 +205,88 @@
   [feature = 'leisure_recreation_ground'] {
     [zoom >= 10] {
       polygon-fill: @park;
-      polygon-opacity: 0.6;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
   [feature = 'tourism_zoo'][zoom >= 10] {
+    polygon-fill: @zoo;
     polygon-pattern-file: url('symbols/zoo.png');
+    [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
   }
 
   [feature = 'leisure_common'][zoom >= 10] {
     polygon-fill: @grass;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'leisure_garden'][zoom >= 10] {
     polygon-fill: @grass;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
-  [feature = 'leisure_golf_course'][zoom >= 10] {
+  [feature = 'leisure_golf_course'][zoom >= 10],
+  [feature = 'leisure_miniature_golf'][zoom >= 15] {
     polygon-fill: @golf_course;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'landuse_allotments'] {
     [zoom >= 10][zoom < 14] {
       polygon-fill: @allotments;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
     [zoom >= 14] {
       polygon-pattern-file: url('symbols/allotments.png');
+      polygon-pattern-alignment: global;
+      [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
     }
   }
 
   [feature = 'landuse_forest'] {
     [zoom >= 8] {
       polygon-fill: @forest;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
     [zoom >= 14] {
       polygon-pattern-file: url('symbols/forest.png');
+      [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
     }
+
   }
 
-  [feature = 'landuse_farmyard'][zoom >= 9] {
+  [feature = 'landuse_farmyard'][zoom >= 10] {
     polygon-fill: @farmyard;
+      [zoom >= 16] {
+        line-width: 0.5;
+        line-color: @farmyard-line;
+        [name != ''] {
+          line-width: 0.7;
+        }
+      }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'landuse_farm'],
   [feature = 'landuse_farmland'] {
-    [zoom >= 9] {
-      polygon-fill: @farm;
+    [zoom >= 10] {
+      polygon-fill: @farmland;
+      [zoom >= 16] {
+        line-width: .5;
+        line-color: @farmland-line;
+      }
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
@@ -202,87 +294,150 @@
   [feature = 'landuse_conservation'] {
     [zoom >= 10] {
       polygon-fill: @grass;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
-  [feature = 'landuse_village_green'][zoom >= 11] {
+  [feature = 'landuse_village_green'][zoom >= 10] {
     polygon-fill: @grass;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'landuse_retail'][zoom >= 10] {
     polygon-fill: @retail;
-    [zoom >= 15] {
-      line-width: 0.3;
-      line-color: red;
+    [zoom >= 16] {
+      line-width: 0.5;
+      line-color: @retail-line;
+      [name != ''] {
+        line-width: 0.7;
+      }
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
-  [feature = 'landuse_industrial'],
-  [feature = 'landuse_railway'] {
-    [zoom >= 10] {
-      polygon-fill: @industrial;
+  [feature = 'landuse_industrial'][zoom >= 10] {
+    polygon-fill: @industrial;
+    [zoom >= 16] {
+      line-width: .5;
+      line-color: @industrial-line;
+      [name != ''] {
+        line-width: 0.7;
+      }
     }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
-  [feature = 'power_station'],
-  [feature = 'power_generator'] {
-    [zoom >= 10] {
+  [feature = 'landuse_railway'][zoom >= 10] {
+    polygon-fill: @railway;
+    [zoom >= 16][name != ''] {
+      line-width: 0.7;
+      line-color: @railway-line;
+    }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
+  }
+
+  [feature = 'power_station'][zoom >= 10],
+  [feature = 'power_generator'][zoom >= 10],
+  [feature = 'power_sub_station'][zoom >= 13],
+  [feature = 'power_substation'][zoom >= 13] {
       polygon-fill: @power;
       [zoom >= 12] {
         line-width: 0.4;
-        line-color: #555;
+        line-color: darken(@power, 40%);
       }
-    }
-  }
-
-  [feature = 'power_sub_station'][zoom >= 13] {
-    polygon-fill: @power;
-    line-width: 0.4;
-    line-color: #555;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'landuse_commercial'][zoom >= 10] {
     polygon-fill: @commercial;
+    [zoom >= 16] {
+      line-width: 0.5;
+      line-color: @commercial-line;
+      [name != ''] {
+        line-width: 0.7;
+      }
+    }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'landuse_brownfield'],
   [feature = 'landuse_landfill'],
-  [feature = 'landuse_greenfield'],
   [feature = 'landuse_construction'] {
     [zoom >= 10] {
       polygon-fill: @construction;
-      polygon-opacity: 0.7;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
   [feature = 'natural_wood'] {
     [zoom >= 8] {
       polygon-fill: @wood;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
-  [feature = 'natural_desert'][zoom >= 8] {
-    polygon-fill: @desert;
+  [feature = 'natural_bare_rock'][zoom >= 9] {
+    polygon-fill: @bare_ground;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
+    [zoom >= 13] {
+      polygon-pattern-file: url('symbols/rock_overlay.png');
+      [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
+    }
+  }
+
+  [feature = 'natural_scree'],
+  [feature = 'natural_shingle'] {
+    [zoom >= 9] {
+      polygon-fill: @bare_ground;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
+      [zoom >= 13] {
+        polygon-pattern-file: url('symbols/scree_overlay.png');
+        [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+        [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
+      }
+    }
   }
 
-  [feature = 'natural_sand'][zoom >= 10] {
+  [feature = 'natural_sand'][zoom >= 9] {
     polygon-fill: @sand;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'natural_heath'][zoom >= 10] {
     polygon-fill: @heath;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'natural_grassland'][zoom >= 10] {
-    polygon-fill: #c6e4b4;
+    polygon-fill: @grassland;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
   [feature = 'natural_scrub'] {
-    [zoom >= 10][zoom < 14] {
-      polygon-fill: #b5e3b5;
+    [zoom >= 10] {
+      polygon-fill: @scrub;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
     [zoom >= 14] {
       polygon-pattern-file: url('symbols/scrub.png');
+      [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
     }
   }
 
@@ -297,6 +452,8 @@
         line-width: 0.3;
         line-color: brown;
       }
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
@@ -304,85 +461,98 @@
     polygon-fill: @parking;
     [zoom >= 15] {
       line-width: 0.3;
-      line-color: @parking;
+      line-color: saturate(darken(@parking, 40%), 20%);
     }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
-  [feature = 'aeroway_apron'][zoom >= 12] {
+  [feature = 'aeroway_apron'][zoom >= 10] {
     polygon-fill: @apron;
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
-  [feature = 'aeroway_aerodrome'][zoom >= 12] {
+  [feature = 'aeroway_aerodrome'][zoom >= 10] {
     polygon-fill: @aerodrome;
-    polygon-opacity: 0.2;
     line-width: 0.2;
-    line-color: #555;
+    line-color: saturate(darken(@aerodrome, 40%), 20%);
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
-  [feature = 'natural_beach'][zoom >= 13] {
+  [feature = 'natural_beach'][zoom >= 10] {
+    polygon-fill: @beach;
     polygon-pattern-file: url('symbols/beach.png');
+    polygon-pattern-alignment: global;
+    [way_pixels >= 4]  { polygon-pattern-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-pattern-gamma: 0.3;  }
   }
 
   [feature = 'highway_services'],
   [feature = 'highway_rest_area'] {
-    [zoom >= 14] {
+    [zoom >= 10] {
       polygon-fill: @rest_area;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
-}
 
-/* man_made=cutline */
-#landcover-line {
-  [zoom >= 14] {
-    line-width: 3;
-    line-join: round;
-    line-cap: square;
-    line-color: @land-color;
-    [zoom >= 16] {
-      line-width: 6;
-    }
+  [feature = 'railway_station'][zoom >= 10] {
+    polygon-fill: @station;
   }
-}
 
-#sports-grounds {
-  [leisure = 'sports_centre'],
-  [leisure = 'stadium'] {
+  [feature = 'leisure_sports_centre'],
+  [feature = 'leisure_stadium'] {
     [zoom >= 10] {
       polygon-fill: @stadium;
+      [way_pixels >= 4]  { polygon-gamma: 0.75; }
+      [way_pixels >= 64] { polygon-gamma: 0.3;  }
     }
   }
 
-  [leisure = 'track'][zoom >= 10] {
+  [feature = 'leisure_track'][zoom >= 10] {
     polygon-fill: @track;
-    line-width: 0.5;
-    line-color: #888;
+    [zoom >= 15] {
+      line-width: 0.5;
+      line-color: saturate(darken(@track, 40%), 20%);
+    }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 
-  [leisure = 'pitch'][zoom >= 10] {
+  [feature = 'leisure_pitch'][zoom >= 10] {
     polygon-fill: @pitch;
-    line-width: 0.5;
-    line-color: #888;
+    [zoom >= 15] {
+      line-width: 0.5;
+      line-color: saturate(darken(@pitch, 40%), 20%);
+    }
+    [way_pixels >= 4]  { polygon-gamma: 0.75; }
+    [way_pixels >= 64] { polygon-gamma: 0.3;  }
   }
 }
 
+/* man_made=cutline */
+#landcover-line {
+  [zoom >= 14] {
+    line-width: 3;
+    line-join: round;
+    line-cap: square;
+    line-color: @land-color;
+    [zoom >= 16] {
+      line-width: 6;
+    }
+  }
+}
 
 #landuse-overlay {
   [landuse = 'military'][zoom >= 10]::landuse {
     polygon-pattern-file: url('symbols/military_red_hatch.png');
     polygon-pattern-alignment: global;
-    line-color: #f55;
+    line-color: @military;
     line-width: 3;
     line-opacity: 0.329;
   }
-  [leisure = 'nature_reserve'][zoom >= 10] {
-    polygon-pattern-file: url('symbols/nature_reserve5.png');
-    line-color: #6c3;
-    line-width: 0.5;
-    [zoom >= 14] {
-      polygon-pattern-file: url('symbols/nature_reserve6.png');
-      line-width: 1;
-    }
-  }
 }
 
 #cliffs {
@@ -393,7 +563,7 @@
     }
   }
   [man_made = 'embankment'][zoom >= 15]::man_made {
-    line-pattern-file: url('symbols/cliff.png');
+    line-pattern-file: url('symbols/embankment.png');
   }
 }
 
@@ -422,15 +592,25 @@
   }
 }
 
-
 #theme-park {
   [tourism = 'theme_park'][zoom >= 13] {
-    line-color: #734a08;
-    line-width: 1.5;
-    line-dasharray: 9,3;
-    line-opacity: 0.6;
-    [zoom >= 15] {
-      line-width: 2.5;
+    a/line-width: 1;
+    a/line-offset: -0.5;
+    a/line-color: @theme_park;
+    a/line-opacity: 0.5;
+    a/line-join: round;
+    a/line-cap: round;
+    b/line-width: 4;
+    b/line-offset: -2;
+    b/line-color: @theme_park;
+    b/line-opacity: 0.3;
+    b/line-join: round;
+    b/line-cap: round;
+    [zoom >= 17] {
+      a/line-width: 2;
+      a/line-offset: -1;
+      b/line-width: 6;
+      b/line-offset: -3;
     }
   }
 }
diff --git a/openstreetmap-carto.style b/openstreetmap-carto.style
index 1c53f73..f2322cf 100644
--- a/openstreetmap-carto.style
+++ b/openstreetmap-carto.style
@@ -1,77 +1,5 @@
-# This is the default osm2pgsql .style file that comes with osm2pgsql.
-#
-# A .style file has 4 columns that define how OSM objects end up in tables in
-# the database and what columns are created. It interacts with the command-line
-# hstore options.
-#
-# Columns
-# =======
-#
-# OsmType: This is either "node", "way" or "node,way" and indicates if this tag
-# applies to nodes, ways, or both.
-#
-# Tag: The tag
-#
-# DataType: The type of the column to be created. Normally "text"
-#
-# Flags: Flags that indicate what table the OSM object is moved into.
-#
-# There are 5 possible flags. These flags are used both to indicate if a column
-# should be created, and if ways with the tag are assumed to be areas. The area
-# assumptions can be overridden with an area=yes/no tag
-#
-# polygon - Create a column for this tag, and objects the tag with are areas
-#
-# linear - Create a column for this tag
-#
-# phstore - Don't create a column for this tag, but objects with the tag are areas
-#
-# delete - Drop this tag completely and don't create a column for it. This also
-# prevents the tag from being added to hstore columns
-#
-# nocache - Deprecated and does nothing
-#
-# If an object has a tag that indicates it is an area or has area=yes/1,
-# osm2pgsql will try to turn it into an area. If it succeeds, it places it in
-# the polygon table. If it fails (e.g. not a closed way) it places it in the
-# line table.
-#
-# Nodes are never placed into the polygon or line table and are always placed in
-# the point table.
-#
-# Hstore
-# ======
-#
-# The options --hstore, --hstore-match-only, and --hstore-all interact with
-# the .style file.
-#
-# With --hstore any tags without a column will be added to the hstore column.
-# This will also cause all objects to be kept.
-#
-# With --hstore-match-only the behavior for tags is the same, but objects are
-# only kept if they have a non-NULL value in one of the columns.
-#
-# With --hstore-all all tags are added to the hstore column unless they appear
-# in the style file with a delete flag, causing duplication between the normal
-# columns and the hstore column.
-#
-# Special database columns
-# ========================
-#
-# There are some special database columns that if present in the .style file
-# will be populated by osm2pgsql.
-#
-# These are
-#
-# z_order - datatype int4
-#
-# way_area - datatype real. The area of the way, in the units of the projection
-# (e.g. square mercator meters). Only applies to areas
-#
-# osm_user, osm_uid, osm_version, osm_timestamp - datatype text. Used with the
-# --extra-attributes option to include metadata in the database. If importing
-# with both --hstore and --extra-attributes the meta-data will end up in the
-# tags hstore column regardless of the style file.
+# This is the .style file for OpenStreetMap Carto, which is currently
+# the same as the upstream osm2pgsql style
 
 # OsmType  Tag          DataType     Flags
 node,way   access       text         linear
@@ -147,7 +75,6 @@ way        way_area     real                # This is calculated during import
 
 # Area tags
 # We don't make columns for these tags, but objects with them are areas.
-# Mainly for use with hstore
 way         abandoned:aeroway       text    phstore
 way         abandoned:amenity       text    phstore
 way         abandoned:building      text    phstore
diff --git a/placenames.mss b/placenames.mss
index d98f2b9..f366187 100644
--- a/placenames.mss
+++ b/placenames.mss
@@ -1,13 +1,14 @@
 @placenames: #222;
 @placenames-light: #777777;
 .country {
-  [place = 'country'][zoom >= 2][zoom < 6] {
+  [admin_level = '2'][zoom >= 2][way_pixels > 3000][way_pixels < 196000] {
     text-name: "[name]";
     text-size: 9;
     text-fill: #9d6c9d;
     text-face-name: @book-fonts;
     text-halo-radius: 1.5;
-    text-wrap-width: 20;
+    text-wrap-width: 50;
+    text-placement: interior;
     [zoom >= 4] {
       text-size: 10;
     }
@@ -15,18 +16,24 @@
 }
 
 .state {
-  [place = 'state'][zoom >= 4][zoom < 9] {
-    text-name: "[ref]";
-    text-size: 9;
-    text-fill: #9d6c9d;
-    text-face-name: @oblique-fonts;
-    text-halo-radius: 1.5;
-    text-wrap-width: 0;
-    [zoom >= 5] {
-      text-name: "[name]";
-    }
-    [zoom >= 7] {
-      text-size: 11;
+  [admin_level = '4'] {
+    [zoom >= 4][zoom < 5][way_pixels > 750][way_pixels < 196000],
+    [zoom >= 5][way_pixels > 3000][way_pixels < 196000] {
+      text-name: "[ref]";
+      text-size: 9;
+      text-fill: #9d6c9d;
+      text-face-name: @oblique-fonts;
+      text-halo-radius: 1.5;
+      text-wrap-width: 0;
+      text-placement: interior;
+      [zoom >= 5] {
+        text-name: "[name]";
+        text-wrap-width: 50;
+      }
+      [zoom >= 7] {
+        text-size: 11;
+        text-wrap-width: 70;
+      }
     }
   }
 }
@@ -38,12 +45,16 @@
     text-fill: @placenames;
     text-face-name: @book-fonts;
     text-halo-radius: 1.5;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: 45;
     text-min-distance: 10;
     [zoom >= 6] {
       text-size: 12;
+      text-wrap-width: 60;
     }
     [zoom >= 11] {
       text-size: 15;
+      text-wrap-width: 75;
     }
   }
 }
@@ -56,12 +67,16 @@
       text-fill: @placenames;
       text-face-name: @book-fonts;
       text-halo-radius: 1.5;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: 45;
       text-min-distance: 10;
       [zoom >= 9] {
         text-size: 12;
+        text-wrap-width: 60;
       }
       [zoom >= 11] {
         text-size: 15;
+        text-wrap-width: 75;
       }
     }
   }
@@ -69,52 +84,74 @@
 
 #placenames-medium::town {
   [place = 'town'] {
-    [zoom >= 9] {
+    [zoom >= 9][zoom < 16] {
       text-name: "[name]";
       text-size: 9;
       text-fill: @placenames;
       text-face-name: @book-fonts;
       text-halo-radius: 1.5;
-      text-wrap-width: 20;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: 45;
       text-min-distance: 10;
-    }
-    [zoom >= 11] {
-      text-size: 11;
-    }
-    [zoom >= 14] {
-      text-size: 15;
-      text-fill: @placenames-light;
+      [zoom >= 11] {
+        text-size: 11;
+        text-wrap-width: 55;
+      }
+      [zoom >= 12] {
+        text-size: 13;
+        text-wrap-width: 65;
+      }
+      [zoom >= 14] {
+        text-size: 15;
+        text-wrap-width: 75;
+      }
     }
   }
 }
 
 #placenames-small::suburb {
-  [place = 'suburb'][zoom >= 12] {
+  [place = 'suburb'][zoom >= 12][zoom < 17] {
     text-name: "[name]";
     text-size: 11;
     text-fill: @placenames;
     text-face-name: @book-fonts;
     text-halo-radius: 1.5;
+    text-halo-fill: rgba(255,255,255,0.6);
+    text-wrap-width: 55;
     text-min-distance: 10;
     [zoom >= 14] {
       text-size: 14;
+      text-wrap-width: 70;
       text-fill: @placenames-light;
+      text-halo-fill: white;
+    }
+    [zoom >= 16] {
+      text-size: 15;
+      text-wrap-width: 75;
     }
   }
 }
 
 #placenames-small::village {
   [place = 'village'] {
-    [zoom >=12] {
+    [zoom >= 12][zoom < 17] {
       text-name: "[name]";
       text-size: 10;
       text-fill: @placenames;
       text-face-name: @book-fonts;
       text-halo-radius: 1.5;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: 50;
       text-min-distance: 10;
-      [zoom >= 15] {
-        text-size: 13;
+      [zoom >= 14] {
         text-fill: @placenames-light;
+        text-halo-fill: white;
+        text-size: 13;
+        text-wrap-width: 65;
+      }
+      [zoom >= 16] {
+        text-size: 15;
+        text-wrap-width: 75;
       }
     }
   }
@@ -126,17 +163,21 @@
   [place = 'neighbourhood'],
   [place = 'isolated_dwelling'],
   [place = 'farm'] {
-    [zoom >= 14] {
+    [zoom >= 15] {
       text-name: "[name]";
       text-size: 9;
       text-fill: @placenames;
       text-face-name: @book-fonts;
       text-halo-radius: 1.5;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: 45;
       text-min-distance: 10;
     }
     [zoom >= 16] {
       text-size: 12;
+      text-wrap-width: 60;
       text-fill: @placenames-light;
+      text-halo-fill: white;
     }
   }
 }
diff --git a/power.mss b/power.mss
index e402c0d..81bf18f 100644
--- a/power.mss
+++ b/power.mss
@@ -2,9 +2,9 @@
   [zoom >= 14] {
     line-width: 1;
     line-color: #777;
-  }
-  [zoom >= 16] {
-    line-width: 1.5;
+    [zoom >= 16] {
+      line-width: 1.5;
+    }
   }
 }
 
@@ -17,18 +17,22 @@
 
 #power-towers {
   [zoom >= 14] {
-    point-file: url('symbols/power_tower_3x3.png');
+    marker-file: url('symbols/power_tower_small.svg');
+    marker-width: 3;
   }
   [zoom >= 15] {
-    point-file: url('symbols/power_tower_5x5.png');
+    marker-file: url('symbols/power_tower.svg');
+    marker-width: 5;
   }
   [zoom >= 17] {
-    point-file: url('symbols/power_tower.png');
+    marker-width: 7;
   }
 }
 
 #power-poles {
   [zoom >= 16] {
-    point-file: url('symbols/power_pole.png');
+    marker-file: url('symbols/square.svg');
+    marker-fill: #928f8f;
+    marker-width: 3;
   }
 }
diff --git a/preview.png b/preview.png
new file mode 100644
index 0000000..0ced751
Binary files /dev/null and b/preview.png differ
diff --git a/project.mml b/project.mml
index 7082f69..7361cd0 100644
--- a/project.mml
+++ b/project.mml
@@ -1,1757 +1,2112 @@
 {
-  "bounds": [
-    -180,
-    -85.05112877980659,
-    180,
-    85.05112877980659
-  ],
-  "center": [
-    0,
-    0,
-    4
-  ],
-  "format": "png",
   "interactivity": false,
-  "minzoom": 0,
-  "maxzoom": 22,
-  "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-  "Stylesheet": [
-    "style.mss",
-    "shapefiles.mss",
-    "landcover.mss",
-    "water.mss",
-    "water-features.mss",
-    "roads.mss",
-    "power.mss",
-    "citywalls.mss",
-    "placenames.mss",
-    "buildings.mss",
-    "amenity-symbols.mss",
-    "stations.mss",
-    "amenity-points.mss",
-    "ferry-routes.mss",
-    "aerialways.mss",
-    "admin.mss",
-    "addressing.mss"
-  ],
   "Layer": [
     {
+      "name": "world",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -85.051,
-        179.99999692067183,
-        83.66933299999998
-      ],
-      "id": "world",
       "class": "",
+      "id": "world",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
-        "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp",
-        "type": "shape"
+        "type": "shape",
+        "file": "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp"
       },
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "world"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 9
+      },
+      "advanced": {}
     },
     {
+      "name": "coast-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -85.051,
-        179.99999692067183,
-        83.66933299999998
-      ],
-      "id": "coast-poly",
       "class": "",
+      "id": "coast-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
-        "file": "data/land-polygons-split-3857/land_polygons.shp",
-        "type": "shape"
+        "type": "shape",
+        "file": "data/land-polygons-split-3857/land_polygons.shp"
       },
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "coast-poly"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "builtup",
+      "srs-name": "mercator",
       "geometry": "polygon",
-      "extent": [
-        -179.12960815429688,
-        -52.982724914179855,
-        178.4432525634766,
-        70.87402746981634
-      ],
-      "id": "builtup",
       "class": "",
+      "id": "builtup",
+      "srs": "+proj=merc +datum=WGS84 +over",
       "Datasource": {
-        "file": "data/world_boundaries/builtup_area.shp",
-        "type": "shape"
+        "type": "shape",
+        "file": "data/world_boundaries/builtup_area.shp"
       },
-      "srs-name": "mercator",
-      "srs": "+proj=merc +datum=WGS84 +over",
-      "advanced": {},
-      "name": "builtup"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 9,
+        "minzoom": 8
+      },
+      "advanced": {}
     },
     {
+      "name": "necountries",
+      "srs-name": "WGS84",
       "geometry": "linestring",
-      "extent": [
-        -140.99778,
-        -54.89681,
-        141.03385176001382,
-        70.16419
-      ],
-      "id": "necountries",
       "class": "",
+      "id": "necountries",
+      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
       "Datasource": {
-        "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp",
-        "type": "shape"
+        "type": "shape",
+        "file": "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp"
       },
-      "srs-name": "WGS84",
-      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
-      "advanced": {},
-      "name": "necountries"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 3,
+        "minzoom": 1
+      },
+      "advanced": {}
     },
     {
+      "name": "landcover-low-zoom",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "landcover-low-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, name, way_pixels,\n    COALESCE(landuse, \"natural\") AS feature\n  FROM (SELECT\n      way, COALESCE(name, '') AS name,\n      ('landuse_' || (CASE WHEN landuse IN ('forest') THEN landuse ELSE NULL END)) AS landuse,\n      ('natural_' || (CASE WHEN \"natural\" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN \"natural\" ELSE NULL END)) AS \"natural\",\n      way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n    FROM p [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way, religion,\ncoalesce (aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway) as feature from (\nselect way,\n('aeroway_' || (case when aeroway in ('apron', 'aerodrome') then aeroway else null end)) as aeroway,\n('amenity_' || (case when amenity in ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard') then amenity else null end)) as amenity,\n('landuse_' || (case when landuse in ('quarry', 'viney [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "",
         "dbname": "gis"
       },
-      "id": "landcover",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "landcover"
-    },
-    {
-      "geometry": "linestring",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "maxzoom": 9
+      },
+      "advanced": {}
+    },
+    {
+      "name": "landcover",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "landcover",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, name, religion, way_pixels,\n    COALESCE(aeroway, amenity, landuse, leisure, military, \"natural\", power, tourism, highway, railway) AS feature \n  FROM (SELECT \n      way, COALESCE(name, '') AS name, \n      ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,\n      ('amenity_' || (CASE WHEN amenity IN ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard', 'prison',  [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way\nfrom planet_osm_line\nwhere man_made='cutline'\n) as landcover_line",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "landcover-line",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "landcover-line"
-    },
-    {
-      "geometry": "polygon",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
+    },
+    {
+      "name": "landcover-line",
+      "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "landcover-line",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE man_made = 'cutline'\n) AS landcover_line",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,leisure,\ncase when leisure='pitch' then 2\n  when leisure='track' then 1\n  else 0 end as prio\n  from planet_osm_polygon\n  where leisure in ('sports_centre','stadium','pitch','track')\n  order by z_order,prio,way_area desc\n) as sports_grounds",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "sports-grounds",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "sports-grounds"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
     },
     {
+      "name": "water-lines-casing",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-lines-casing",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT \n    way, waterway, intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel\n  FROM planet_osm_line\n  WHERE waterway IN ('stream', 'drain', 'ditch')\n) AS water_lines_casing",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,waterway\n      from planet_osm_line\n      where waterway in ('stream','drain','ditch')\n        and (tunnel is null or tunnel != 'yes')\n      ) as water_lines_casing",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "water-lines-casing",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "water-lines-casing"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "water-lines-low-zoom",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-lines-low-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, waterway, intermittent\n  FROM planet_osm_line\n  WHERE waterway = 'river'\n) AS water_lines_low_zoom",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,waterway\n      from planet_osm_line\n      where waterway='river'\n      ) as water_lines_low_zoom",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "water-lines-low-zoom",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "water-lines-low-zoom"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 11,
+        "minzoom": 8
+      },
+      "advanced": {}
     },
     {
+      "name": "water-areas",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-areas",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, \"natural\", waterway, landuse, name, way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE\n    (waterway IN ('dock', 'riverbank', 'canal')\n      OR landuse IN ('reservoir', 'basin')\n      OR \"natural\" IN ('water', 'glacier', 'mud'))\n    AND building IS NULL\n    AND way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) > 0.01\n  ORDER BY z_order, way_area DESC\n) AS water_areas",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,\"natural\",waterway,landuse,name\n      from planet_osm_polygon\n      where (waterway in ('dock','mill_pond','riverbank','canal')\n         or landuse in ('reservoir','water','basin')\n         or \"natural\" in ('lake','water','land','glacier','mud'))\n         and building is null\n      order by z_order,way_area desc\n      ) as water_areas",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "water-areas",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "water-areas"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 4
+      },
+      "advanced": {}
     },
     {
+      "name": "water-areas-overlay",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-areas-overlay",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, \"natural\"\n  FROM planet_osm_polygon\n  WHERE \"natural\" IN ('marsh', 'wetland')\n    AND building IS NULL\n  ORDER BY z_order, way_area DESC\n) AS water_areas_overlay",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,\"natural\"\n      from planet_osm_polygon\n      where \"natural\" in ('marsh','wetland') and building is null\n      order by z_order,way_area desc\n      ) as water_areas_overlay",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "water-areas-overlay",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "water-areas-overlay"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "water-lines",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "water-lines",
+      "id": "water-lines",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT \n    way, waterway, name, intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,\n    'no' AS bridge\n  FROM planet_osm_line\n  WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n    AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct'))\n  ORDER BY z_order\n) AS water_lines",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,waterway,lock,name,tunnel\n      from planet_osm_line\n      where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n        and (bridge is null or bridge not in ('yes','true','1','aqueduct'))\n      order by z_order\n      ) as water_lines",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "water-lines",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "water-lines"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
     },
     {
+      "name": "water-barriers-line",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-barriers-line",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, waterway, name \n  FROM planet_osm_line \n  WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_line",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,name from planet_osm_line where waterway='dam') as dam",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "dam",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "dam"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "water-barriers-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-barriers-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, waterway, name \n  FROM planet_osm_polygon \n  WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_poly",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_polygon where leisure ='marina') as marinas_area",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "marinas-area",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "marinas-area"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "marinas-area",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "marinas-area",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_polygon\n  WHERE leisure = 'marina'\n) AS marinas_area",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,man_made from planet_osm_polygon where man_made in ('pier','breakwater','groyne')) as piers_area",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "piers-area",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "piers-area"
-    },
-    {
-      "geometry": "linestring",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
+    },
+    {
+      "name": "piers-poly",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "piers-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, man_made\n  FROM planet_osm_polygon\n  WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_poly",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,man_made from planet_osm_line where man_made in ('pier','breakwater','groyne')) as piers",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "piers",
-      "class": "",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
+    },
+    {
+      "name": "piers-line",
       "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "piers-line",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "piers"
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, man_made\n  FROM planet_osm_line\n  WHERE man_made IN ('pier', 'breakwater', 'groyne')\n) AS piers_line",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
     },
     {
+      "name": "water-barriers-point",
+      "srs-name": "900913",
       "geometry": "point",
+      "class": "",
+      "id": "water-barriers-point",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT \n    way, waterway \n  FROM planet_osm_point \n  WHERE waterway IN ('dam', 'weir', 'lock_gate')\n) AS water_barriers_points",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 17
+      },
+      "advanced": {}
+    },
+    {
+      "name": "buildings",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "buildings",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    building\n  FROM planet_osm_polygon\n  WHERE building IS NOT NULL\n    AND building != 'no'\n  ORDER BY z_order, way_area DESC\n) AS buildings",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,waterway from planet_osm_point where waterway='lock_gate') as locks",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "locks",
-      "class": "",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
+    },
+    {
+      "name": "buildings-major",
       "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "buildings-major",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "locks"
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    building,\n    amenity,\n    aeroway\n  FROM planet_osm_polygon\n  WHERE building IS NOT NULL\n    AND building != 'no'\n    AND (aeroway = 'terminal' OR amenity = 'place_of_worship')\n  ORDER BY z_order, way_area DESC)\nAS buildings_major",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
     },
     {
+      "name": "tunnels",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "tunnels-fill tunnels-casing access directions",
+      "id": "tunnels",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT *\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on\n        horse,\n        foot,\n        bicycle,\n        tracktype,\n        CASE WHEN access IN ('destination') THEN 'destination'::text\n          WHEN access IN [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway e [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "tunnels",
-      "class": "tunnels-fill tunnels-casing access directions",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "tunnels",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
       "properties": {
-        "group-by": "layernotnull"
-      }
+        "group-by": "layernotnull",
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "citywalls",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE historic = 'citywalls')\nAS citywalls",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where \"historic\"='citywalls') as citywalls",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
       "id": "citywalls",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "citywalls"
+      "advanced": {}
     },
     {
+      "name": "castlewalls",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "castlewalls",
+      "id": "castlewalls",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE historic = 'castle_walls'\n) AS castlewalls",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where \"historic\"='castle_walls') as castlewalls",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "castlewalls",
-      "class": "castlewalls",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "castlewalls"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
     },
     {
+      "name": "castlewalls-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "castlewalls",
+      "id": "castlewalls-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_polygon\n  WHERE historic = 'castle_walls'\n) AS castlewalls_poly",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_polygon where \"historic\"='castle_walls') as castlewalls_poly",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "castlewalls-poly",
-      "class": "castlewalls",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "castlewalls-poly"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
     },
     {
+      "name": "landuse-overlay",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "landuse-overlay",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, landuse, leisure\n  FROM planet_osm_polygon\n  WHERE landuse = 'military'\n    AND building IS NULL\n) AS landuse_overlay",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,landuse,leisure\n       from planet_osm_polygon\n       where (landuse = 'military' or leisure='nature_reserve') and building is null\n      ) as landuse_overlay",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "landuse-overlay",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "landuse-overlay"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "line-barriers",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "barriers",
+      "id": "line-barriers",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, barrier\n  FROM planet_osm_line\n  WHERE barrier IS NOT NULL\n) AS line_barriers",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way, barrier from planet_osm_line where barrier is not null) as line_barriers",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "line-barriers",
-      "class": "barriers",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "line-barriers"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 16
+      },
+      "advanced": {}
     },
     {
+      "name": "cliffs",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "cliffs",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, \"natural\", man_made\n  FROM planet_osm_line\n  WHERE \"natural\" = 'cliff' OR man_made = 'embankment'\n) AS cliffs",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,\"natural\",man_made from planet_osm_line where \"natural\" = 'cliff' or man_made = 'embankment') as cliffs",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "cliffs",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "cliffs"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "area-barriers",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "barriers",
+      "id": "area-barriers",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, barrier\n  FROM planet_osm_polygon\n  WHERE barrier IS NOT NULL\n) AS area_barriers",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,barrier from planet_osm_polygon where barrier is not null) as area_barriers",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "area-barriers",
-      "class": "barriers",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "area-barriers"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 16
+      },
+      "advanced": {}
     },
     {
+      "name": "ferry-routes",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "ferry-routes",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE route = 'ferry'\n) AS ferry_routes",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where route='ferry' ) as ferry_routes",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "ferry-routes",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "ferry-routes"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 7
+      },
+      "advanced": {}
     },
     {
+      "name": "turning-circle-casing",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "turning-circle-casing",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT DISTINCT ON (p.way)\n    p.way AS way, l.highway AS int_tc_type,\n    CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway')\n      THEN 'INT-minor'::text\n      ELSE 'INT-normal'::text\n    END AS int_tc_service\n  FROM planet_osm_point p\n    JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator\n    JOIN (VALUES\n      ('tertiary', 1),\n      ('unclassified', 2),\n      ('residential', 3),\n      ('living_street', 4),\n    [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select distinct on (p.way) p.way as way,l.highway as int_tc_type\n       from planet_osm_point p\n       join planet_osm_line l\n        on ST_DWithin(p.way,l.way,0.1)\n       join (values\n        ('tertiary',1),\n        ('unclassified',2),\n        ('residential',3),\n        ('living_street',4),\n        ('service',5)\n       ) as v (highway,prio)\n        on v.highway=l.highway\n       where p.highway='turning_circle'\n       order by p.way,v.prio\n      ) as turn [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "turning-circle-casing",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "turning-circle-casing"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 15
+      },
+      "advanced": {}
     },
     {
+      "name": "highway-area-casing",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "highway-area-casing",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    COALESCE((\n      'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)),\n      ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))\n    ) AS feature\n  FROM planet_osm_polygon\n  WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')\n    OR ra [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,coalesce(('highway_' || (case when highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform') then highway else null end)), ('railway_' || (case when railway in ('platform') then railway else null end))) as feature from planet_osm_polygon\n       where highway in ('residential','unclassified','pedestrian','service','footway','track','path','platform')\n          or railway in ('platform')\n       order by z_order,way [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "highway-area-casing",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "highway-area-casing"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
     },
     {
+      "name": "roads-casing",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "roads-casing",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT *\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on\n        horse,\n        foot,\n        bicycle,\n        tracktype,\n        CASE WHEN access IN ('destination') THEN 'destination'::text\n          WHEN access IN [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then rai [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
       "id": "roads-casing",
-      "class": "roads-casing",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-casing"
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
-      "Datasource": {
-        "type": "postgis",
-        "table": "(select way,coalesce(('highway_' || (case when highway in ('residential','unclassified','pedestrian','service','footway','living_street','track','path','platform','services') then highway else null end)), ('railway_' || (case when railway in ('platform') then railway else null end)), (('aeroway_' || case when aeroway in ('runway','taxiway','helipad') then aeroway else null end))) as feature from planet_osm_polygon\n       where highway in ('residential','unclassified',' [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
-        "key_field": "",
-        "geometry_field": "way",
-        "dbname": "gis"
-      },
-      "id": "highway-area-fill",
-      "class": "",
+      "name": "highway-area-fill",
       "srs-name": "900913",
+      "class": "",
+      "id": "highway-area-fill",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "highway-area-fill"
-    },
-    {
-      "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    COALESCE(\n      ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)),\n      ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)),\n      (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END))\n    ) AS feature\n  FROM planet_osm [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,building,railway,amenity from planet_osm_polygon\n       where railway='station'\n          or building in ('station','supermarket')\n          or amenity='place_of_worship'\n       order by z_order,way_area desc) as buildings_lz",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "buildings-lz",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "buildings-lz"
-    },
-    {
-      "geometry": "polygon",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
-      "Datasource": {
-        "type": "postgis",
-        "table": "      (select way,aeroway,\n        case\n         when building in ('residential','house','garage','garages','detached','terrace','apartments') then 'INT-light'::text\n         else building\n        end as building\n       from planet_osm_polygon\n       where (building is not null\n         and building not in ('no','station','supermarket','planned')\n         and (railway is null or railway != 'station')\n         and (amenity is null or amenity != 'place_of_worship [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
-        "key_field": "",
-        "geometry_field": "way",
-        "dbname": "gis"
+      "properties": {
+        "minzoom": 14
       },
-      "id": "buildings",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "buildings"
+      "advanced": {}
     },
     {
+      "name": "roads-fill",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "roads-fill access directions",
+      "id": "roads-fill",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT *\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on\n        horse,\n        foot,\n        bicycle,\n        tracktype,\n        CASE WHEN access IN ('destination') THEN 'destination'::text\n          WHEN access IN [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then rai [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "roads-fill",
-      "class": "roads-fill access directions",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-fill"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "turning-circle-fill",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "turning-circle-fill",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    DISTINCT on (p.way)\n    p.way AS way, l.highway AS int_tc_type,\n    CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text\n      ELSE 'INT-normal'::text END AS int_tc_service\n  FROM planet_osm_point p\n    JOIN planet_osm_line l\n      ON ST_DWithin(p.way, l.way, 0.1)\n    JOIN (VALUES\n      ('tertiary', 1),\n      ('unclassified', 2),\n      ('residential', 3),\n      ('living_street', 4),\n      ('service', 5)\n  [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select distinct on (p.way) p.way as way,l.highway as int_tc_type\n       from planet_osm_point p\n       join planet_osm_line l\n        on ST_DWithin(p.way,l.way,0.1)\n       join (values\n        ('tertiary',1),\n        ('unclassified',2),\n        ('residential',3),\n        ('living_street',4),\n        ('service',5)\n       ) as v (highway,prio)\n        on v.highway=l.highway\n       where p.highway='turning_circle'\n       order by p.way,v.prio\n      ) a [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "turning-circle-fill",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "turning-circle-fill"
-    },
-    {
-      "geometry": "linestring",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
-      "Datasource": {
-        "type": "postgis",
-        "table": "(select way,aerialway from planet_osm_line where aerialway is not null) as aerialways",
-        "extent": "-20037508,-19929239,20037508,19929239",
-        "key_field": "",
-        "geometry_field": "way",
-        "dbname": "gis"
+      "properties": {
+        "minzoom": 15
       },
-      "id": "aerialways",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "aerialways"
+      "advanced": {}
     },
     {
+      "name": "aerialways",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "aerialways",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    aerialway\n  FROM planet_osm_line\n  WHERE aerialway IS NOT NULL\n) AS aerialways",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,coalesce(('highway_' || (case when highway is not null then highway else null end)), ('railway_' || (case when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('rail','tram','light_rail','funicular','narrow_gauge') then railway else null end))) as feature,tunnel\n       from planet_osm_roads\n       where highway is not null\n          or (railway is not null and railway!='preserved' and (service is [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "roads-low-zoom",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-low-zoom"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
     },
     {
+      "name": "roads-low-zoom",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "roads-low-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    COALESCE(\n      ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)),\n      ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END))\n    ) AS feature,\n    CASE WHEN tunnel = 'yes' OR tunnel = 'building_ [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,name from planet_osm_line where waterway='canal' and bridge in ('yes','true','1','aqueduct') order by z_order) as waterway_bridges",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "waterway-bridges",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "waterway-bridges"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 9,
+        "minzoom": 5
+      },
+      "advanced": {}
     },
     {
+      "name": "waterway-bridges",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "water-lines",
+      "id": "waterway-bridges",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    waterway,\n    name,\n    intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,\n    'yes' AS bridge\n  FROM planet_osm_line\n  WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n    AND bridge IN ('yes', 'aqueduct')\n  ORDER BY z_order\n) AS waterway_bridges",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,coalesce(('highway_' || highway), ('railway_' ||(case when railway='preserved' and service in ('spur','siding','yard') then 'INT-preserved-ssy'::text when (railway='rail' and service in ('spur','siding','yard'))  then 'INT-spur-siding-yard' when railway in ('light_rail', 'narrow_gauge', 'funicular', 'rail', 'subway', 'tram', 'spur', 'siding', 'monorail', 'platform', 'preserved', 'disused', 'abandoned', 'construction', 'miniature', 'turntable') then railway e [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "bridges",
-      "class": "bridges-fill bridges-casing access directions",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "bridges",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
       "properties": {
-        "group-by": "layernotnull"
-      }
+        "minzoom": 15
+      },
+      "advanced": {}
     },
     {
+      "name": "bridges",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "bridges-fill bridges-casing access directions",
+      "id": "bridges",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT *\n  FROM ( -- subselect that contains both roads and rail/aero\n    SELECT\n        way,\n        ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on\n        horse,\n        foot,\n        bicycle,\n        tracktype,\n        CASE WHEN access IN ('destination') THEN 'destination'::text\n          WHEN access IN [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,railway,bridge from planet_osm_line where railway='tram' and (tunnel is null or tunnel != 'yes')) as trams",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "trams",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "trams"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "group-by": "layernotnull",
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "guideways",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "guideways",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way FROM planet_osm_line WHERE highway = 'bus_guideway' AND (tunnel IS NULL OR tunnel != 'yes')) AS guideways",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where highway='bus_guideway' and (tunnel is null or tunnel != 'yes')) as guideways",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "guideways",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "guideways"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "admin-low-zoom",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    admin_level\n  FROM planet_osm_roads\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4')\n  ORDER BY admin_level DESC\n) AS admin_low_zoom",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,admin_level\n       from planet_osm_roads\n       where \"boundary\"='administrative'\n         and admin_level in ('0','1','2','3','4')\n       ) as admin_01234",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "admin-01234",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "admin-01234"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "id": "admin-low-zoom",
+      "properties": {
+        "maxzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "admin-mid-zoom",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "admin-mid-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    admin_level\n  FROM planet_osm_roads\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8')\n  ORDER BY admin_level DESC\n) AS admin_mid_zoom",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,admin_level\n       from planet_osm_roads\n       where \"boundary\"='administrative'\n         and admin_level in ('5','6','7','8')\n       ) as admin_5678",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "admin-5678",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "admin-5678"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 12,
+        "minzoom": 11
+      },
+      "advanced": {}
     },
     {
+      "name": "admin-high-zoom",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "admin-high-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    admin_level\n  FROM planet_osm_roads\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')\n  ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering\n) AS admin_high_zoom",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,admin_level\n       from planet_osm_roads\n       where \"boundary\"='administrative'\n         and admin_level in ('9', '10')\n       ) as admin_other",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "admin-other",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "admin-other"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "power-minorline",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "power-minorline",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way FROM planet_osm_line WHERE \"power\" = 'minor_line') AS power_minorline",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where \"power\"='minor_line') as power_minorline",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "power-minorline",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "power-minorline"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 16
+      },
+      "advanced": {}
     },
     {
+      "name": "power-line",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "power-line",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way FROM planet_osm_line WHERE \"power\" = 'line') AS power_line",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where \"power\"='line') as power_line",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "power-line",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "power-line"
-    },
-    {
-      "geometry": "point",
       "extent": [
-        -179.58997888396897,
-        -85.051,
-        179.38330358817018,
-        82.48332318035943
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
-      "id": "nepopulated",
-      "class": "",
-      "Datasource": {
-        "file": "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp",
-        "type": "shape",
-        "encoding": "windows-1252"
-      },
-      "srs-name": "WGS84",
-      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
-      "advanced": {
-        "encoding": "windows-1252"
+      "properties": {
+        "minzoom": 14
       },
-      "name": "nepopulated"
+      "advanced": {}
     },
     {
-      "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "name": "nature-reserve-boundaries",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "nature-reserve-boundaries",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    name,\n    boundary,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')\n    AND building IS NULL\n) AS national_park_boundaries",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,place,name,ref\n       from planet_osm_point\n       where place in ('country','state')\n      ) as placenames_large",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "placenames-large",
-      "class": "country state",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "placenames-large"
-    },
-    {
-      "geometry": "point",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 7
+      },
+      "advanced": {}
+    },
+    {
+      "name": "theme-park",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "theme-park",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, name, tourism FROM planet_osm_polygon WHERE tourism = 'theme_park') AS theme_park",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,place,name,ref\n       from planet_osm_point\n       where place in ('city','town') and capital='yes'\n      ) as placenames_capital",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "placenames-capital",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "placenames-capital"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
+      "name": "placenames-large",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "country state",
+      "id": "placenames-large",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    name,\n    ref,\n    admin_level\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('2', '4')\n) AS placenames_large",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,place,name\n      from planet_osm_point\n      where place in ('city','town')\n        and (capital is null or capital != 'yes')\n      ) as placenames_medium",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "placenames-medium",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "placenames-medium"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 2
+      },
+      "advanced": {}
     },
     {
+      "name": "nepopulated",
+      "srs-name": "WGS84",
       "geometry": "point",
+      "class": "",
+      "id": "nepopulated",
+      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
+      "Datasource": {
+        "type": "shape",
+        "file": "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp",
+        "encoding": "windows-1252"
+      },
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
-      "Datasource": {
-        "type": "postgis",
-        "table": "(select way,place,name\n      from planet_osm_point\n      where place in ('suburb','village','hamlet','neighbourhood','locality','isolated_dwelling','farm')\n      ) as placenames_small",
-        "extent": "-20037508,-19929239,20037508,19929239",
-        "key_field": "",
-        "geometry_field": "way",
-        "dbname": "gis"
+      "properties": {
+        "maxzoom": 4,
+        "minzoom": 3
       },
-      "id": "placenames-small",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "placenames-small"
+      "advanced": {
+        "encoding": "windows-1252"
+      }
     },
     {
+      "name": "placenames-capital",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "placenames-capital",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    place,\n    name,\n    ref\n  FROM planet_osm_point\n  WHERE place IN ('city', 'town')\n    AND capital IN ('yes', '4')\n) AS placenames_capital",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,name,railway,aerialway,disused\n      from planet_osm_point\n      where railway in ('station','halt','tram_stop','subway_entrance')\n         or aerialway='station'\n      ) as stations",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "stations",
-      "class": "stations",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "stations"
-    },
-    {
-      "geometry": "polygon",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "maxzoom": 14,
+        "minzoom": 5
+      },
+      "advanced": {}
+    },
+    {
+      "name": "placenames-medium",
+      "srs-name": "900913",
+      "geometry": "point",
+      "class": "",
+      "id": "placenames-medium",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    place,\n    name\n  FROM planet_osm_point\n  WHERE place IN ('city', 'town')\n    AND (capital IS NULL OR capital NOT IN ('yes', '4'))\n) AS placenames_medium",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,name,railway,aerialway,disused\n      from planet_osm_polygon\n      where railway in ('station','halt','tram_stop')\n         or aerialway='station'\n      ) as stations_poly",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "stations-poly",
-      "class": "stations",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "stations-poly"
-    },
-    {
-      "geometry": "polygon",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 6
+      },
+      "advanced": {}
+    },
+    {
+      "name": "placenames-small",
+      "srs-name": "900913",
+      "geometry": "point",
+      "class": "",
+      "id": "placenames-small",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, place, name\n      FROM planet_osm_point\n      WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm')\n      ) AS placenames_small",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,name,way_area\n      from planet_osm_polygon\n      where \"natural\"='glacier' and building is null\n      order by way_area desc\n      ) as glaciers_text",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "glaciers-text",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "glaciers-text"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
     },
     {
+      "name": "stations",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "stations",
+      "id": "stations",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    name,\n    railway,\n    aerialway,\n    disused\n  FROM planet_osm_point\n  WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance')\n    OR aerialway = 'station'\n) AS stations",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select *\n      from planet_osm_point\n      where aeroway in ('aerodrome','helipad')\n         or barrier in ('bollard','gate','lift_gate','block')\n         or highway in ('mini_roundabout','gate')\n         or man_made in ('lighthouse','power_wind','windmill','mast')\n         or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n         or \"natural\" in ('peak','volcano','spring','tree','cave_entrance')\n         or railway='level_cross [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "amenity-symbols",
-      "class": "symbols",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "amenity-symbols"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
     },
     {
+      "name": "stations-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "stations",
+      "id": "stations-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    name,\n    railway,\n    aerialway,\n    disused\nFROM planet_osm_polygon\nWHERE railway IN ('station', 'halt', 'tram_stop')\n  OR aerialway = 'station'\n) AS stations_poly",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select *\n      from planet_osm_polygon\n      where aeroway in ('aerodrome','helipad')\n         or barrier in ('bollard','gate','lift_gate','block')\n         or highway in ('mini_roundabout','gate')\n         or man_made in ('lighthouse','power_wind','windmill','mast')\n         or (power='generator' and (\"generator:source\"='wind' or power_source='wind'))\n         or \"natural\" in ('peak','volcano','spring','tree')\n         or railway='level_crossing'\n      )  [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "amenity-symbols-poly",
-      "class": "symbols",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "amenity-symbols-poly"
-    },
-    {
-      "geometry": "point",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 12
+      },
+      "advanced": {}
+    },
+    {
+      "name": "trees",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "trees",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way, \"natural\"\n  FROM planet_osm_point\n  WHERE \"natural\" = 'tree'\nUNION ALL\nSELECT\n    way, \"natural\"\n  FROM planet_osm_line\n  WHERE \"natural\" = 'tree_row'\n) AS trees",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n      from planet_osm_point\n      where amenity is not null\n         or shop is not null\n         or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n         or highway in ('bus_stop','traffic_signals','ford')\n         or man_made in ('mast','water_ [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "amenity-points",
-      "class": "points",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "amenity-points"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 16
+      },
+      "advanced": {}
     },
     {
+      "name": "amenity-points-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "points",
+      "id": "amenity-points-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 'car_rental', 'car_sha [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,amenity,shop,tourism,highway,man_made,access,religion,waterway,lock,historic,leisure\n      from planet_osm_polygon\n      where amenity is not null\n         or shop is not null\n         or tourism in ('alpine_hut','camp_site','picnic_site','caravan_site','guest_house','hostel','hotel','motel','museum','viewpoint','bed_and_breakfast','information','chalet')\n         or highway in ('bus_stop','traffic_signals')\n         or man_made in ('mast','water_tower [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "amenity-points-poly",
-      "class": "points",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "amenity-points-poly"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "amenity-points",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "points",
+      "id": "amenity-points",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 'car_rental', 'car_sha [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_point where power='tower') as power_towers",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "power-towers",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "power-towers"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "power-towers",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "power-towers",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way FROM planet_osm_point WHERE power = 'tower') AS power_towers",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_point where power='pole') as power_poles",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "power-poles",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "power-poles"
-    },
-    {
-      "geometry": "linestring",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
-      "Datasource": {
-        "type": "postgis",
-        "table": "      (select way,highway,ref,char_length(ref) as length\n       from planet_osm_roads\n       where highway in ('motorway','trunk','primary','secondary')\n         and ref is not null\n         and char_length(ref) between 1 and 8\n      ) as roads_text_ref_low_zoom",
-        "extent": "-20037508,-19929239,20037508,19929239",
-        "key_field": "",
-        "geometry_field": "way",
-        "dbname": "gis"
+      "properties": {
+        "minzoom": 14
       },
-      "id": "roads-text-ref-low-zoom",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-text-ref-low-zoom"
+      "advanced": {}
     },
     {
+      "name": "power-poles",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "power-poles",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way FROM planet_osm_point WHERE power = 'pole') AS power_poles",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "     (select way,ref,name\n      from planet_osm_point\n      where highway='motorway_junction'\n     ) as highway_junctions",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "highway-junctions",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "highway-junctions"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 16
+      },
+      "advanced": {}
     },
     {
+      "name": "roads-text-ref-low-zoom",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "roads-text-ref-low-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, highway, height, width, refs FROM\n  (SELECT\n      way, highway,\n      array_length(refs,1) AS height,\n      (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,\n      array_to_string(refs, E'\\n') AS refs\n    FROM (\n      SELECT\n          way,\n          highway,\n          string_to_array(ref, ';') AS refs\n      FROM planet_osm_roads\n        WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary')\n        AND ref IS NOT NUL [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,coalesce(highway,aeroway) as highway,ref,char_length(ref) as length,\n       case when bridge in ('yes','true','1') then 'yes'::text else 'no'::text end as bridge\n       from planet_osm_line\n       where (highway is not null or aeroway is not null)\n         and ref is not null\n         and char_length(ref) between 1 and 8\n      ) as roads_text_ref",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "roads-text-ref",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-text-ref"
-    },
-    {
-      "geometry": "polygon",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "maxzoom": 12,
+        "minzoom": 10
+      },
+      "advanced": {}
+    },
+    {
+      "name": "junctions",
+      "srs-name": "900913",
+      "geometry": "point",
+      "class": "",
+      "id": "junctions",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "     (SELECT way, highway, junction, ref, name\n      FROM planet_osm_point\n      WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes'\n     ) AS junctions",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way, highway, name\n       from planet_osm_polygon\n       where highway='pedestrian'\n         and name is not null\n      ) as roads_area_text_name",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "roads-area-text-name",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-area-text-name"
-    },
-    {
-      "geometry": "linestring",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 11
+      },
+      "advanced": {}
+    },
+    {
+      "name": "roads-text-ref",
+      "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "roads-text-ref",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, highway, height, width, refs FROM\n  (SELECT\n      way, highway,\n      array_length(refs,1) AS height,\n      (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,\n      array_to_string(refs, E'\\n') AS refs\n    FROM (\n      SELECT\n          way,\n          COALESCE(\n            CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END,\n            CASE WHE [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way, highway, name\n       from planet_osm_line\n       where highway in ('motorway','motorway_link','trunk','trunk_link','primary','primary_link','secondary','secondary_link','tertiary','tertiary_link','residential','unclassified','road','service','pedestrian','raceway','living_street', 'construction') \n         and name is not null\n      ) as roads_text_name",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "roads-text-name",
-      "class": "",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
+    },
+    {
+      "name": "roads-area-text-name",
       "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "roads-area-text-name",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "roads-text-name"
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "      (SELECT way, way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, highway, name\n       FROM planet_osm_polygon\n       WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform') OR railway IN ('platform') AND name IS NOT NULL\n      ) AS roads_area_text_name",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 15
+      },
+      "advanced": {}
     },
     {
+      "name": "roads-text-name",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "roads-text-name",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way,\n    CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,\n    CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,\n    CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,\n    name\n  FROM planet_osm_line\n  WHERE highway IN ('motorway', 'moto [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way, highway, name\n       from planet_osm_line\n       where highway in ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps') \n         and name is not null\n      ) as paths_text_name",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "paths-text-name",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "paths-text-name"
-    },
-    {
-      "geometry": "point",
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
+    },
+    {
+      "name": "paths-text-name",
+      "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "paths-text-name",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "      (SELECT way, highway, name\n       FROM planet_osm_line\n       WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps')\n         AND name IS NOT NULL\n      ) AS paths_text_name",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,amenity,shop,access,leisure,landuse,man_made,\"natural\",place,tourism,ele,name,ref,military,aeroway,waterway,historic,NULL as way_area\n       from planet_osm_point\n       where amenity is not null\n          or shop in ('supermarket','bakery','clothes','fashion','convenience','doityourself','hairdresser','department_store','butcher','car','car_repair','bicycle','florist')\n          or leisure is not null\n          or landuse is not null\n          [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "text",
-      "class": "text",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "text"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 15
+      },
+      "advanced": {}
     },
     {
+      "name": "text-poly-low-zoom",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "text-low-zoom",
+      "id": "text-poly-low-zoom",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    COALESCE(\n      'landuse_' || CASE WHEN landuse IN ('forest') THEN landuse ELSE NULL END,\n      'natural_' || CASE WHEN \"natural\" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN \"natural\" ELSE NULL END,\n      'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END\n    ) AS feature,\n    name,\n    CASE WHEN buildi [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,aeroway,shop,access,amenity,leisure,landuse,man_made,\"natural\",place,tourism,NULL as ele,name,ref,military,waterway,historic,way_area\n       from planet_osm_polygon\n       where amenity is not null\n          or shop in ('supermarket','bakery','clothes','fashion','convenience','doityourself','hairdresser','department_store', 'butcher','car','car_repair','bicycle')\n          or leisure is not null\n          or landuse is not null\n          or tourism i [...]
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "text-poly",
-      "class": "text",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "text-poly"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "maxzoom": 9,
+        "minzoom": 7
+      },
+      "advanced": {}
     },
     {
+      "name": "text-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "text",
+      "id": "text-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' ||  [...]
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select name, way, way_area from planet_osm_polygon where building is not null  and building not in ('no','station','supermarket')) as building_text",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "building-text",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "building-text"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
     },
     {
+      "name": "text-line",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "text",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT way, NULL as way_pixels, COALESCE('man_made_' || man_made, 'waterway_' || waterway) AS feature, access, NULL as ele, name, ref, NULL AS way_area,\n CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building\n FROM planet_osm_line\n WHERE man_made IN ('pier', 'breakwater', 'groyne')\n    OR waterway IN ('dam', 'weir')\n) AS text_line",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way from planet_osm_line where \"addr:interpolation\" is not null) as interpolation",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "interpolation",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "interpolation"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "id": "text-line",
+      "advanced": {}
     },
     {
+      "name": "text-point",
+      "srs-name": "900913",
       "geometry": "point",
+      "class": "text",
+      "id": "text-point",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    NULL AS way_pixels,\n    COALESCE(\n      'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,\n      'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,\n      'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court' [...]
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 10
+      },
+      "advanced": {}
+    },
+    {
+      "name": "building-text",
+      "srs-name": "900913",
+      "geometry": "polygon",
+      "class": "",
+      "id": "building-text",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    name,\n    way,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE building IS NOT NULL\n    AND building NOT IN ('no', 'station', 'supermarket')\n  ORDER BY way_area DESC\n) AS building_text",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,\"addr:housenumber\" from planet_osm_polygon where \"addr:housenumber\" is not null and building is not null\n       union\n       select way,\"addr:housenumber\" from planet_osm_point where \"addr:housenumber\" is not null\n      ) as housenumbers",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "housenumbers",
-      "class": "",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
+    },
+    {
+      "name": "interpolation",
       "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "interpolation",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "housenumbers"
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way\n  FROM planet_osm_line\n  WHERE \"addr:interpolation\" IS NOT NULL\n) AS interpolation",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 17
+      },
+      "advanced": {}
     },
     {
+      "name": "housenumbers",
+      "srs-name": "900913",
       "geometry": "point",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "housenumbers",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    \"addr:housenumber\",\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE \"addr:housenumber\" IS NOT NULL\n    AND building IS NOT NULL\nUNION ALL\nSELECT\n    way,\n    \"addr:housenumber\",\n    NULL AS way_pixels\n  FROM planet_osm_point\n  WHERE \"addr:housenumber\" IS NOT NULL\n  ORDER BY way_pixels DESC NULLS LAST\n) AS housenumbers",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,\"addr:housename\" from planet_osm_polygon where \"addr:housename\" is not null and building is not null\n       union\n       select way,\"addr:housename\" from planet_osm_point where \"addr:housename\" is not null\n      ) as housenames",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "housenames",
-      "class": "",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 17
+      },
+      "advanced": {}
+    },
+    {
+      "name": "housenames",
       "srs-name": "900913",
+      "geometry": "point",
+      "class": "",
+      "id": "housenames",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "housenames"
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    \"addr:housename\",\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE \"addr:housename\" IS NOT NULL\n    AND building IS NOT NULL\nUNION ALL\nSELECT\n    way,\n    \"addr:housename\",\n    NULL AS way_pixels\n  FROM planet_osm_point WHERE \"addr:housename\" IS NOT NULL\nORDER BY way_pixels DESC NULLS LAST\n) AS housenames",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 17
+      },
+      "advanced": {}
     },
     {
+      "name": "water-lines-text",
+      "srs-name": "900913",
       "geometry": "linestring",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "",
+      "id": "water-lines-text",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    waterway,\n    lock,\n    name,\n    intermittent,\n    CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel\n  FROM planet_osm_line\n  WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')\n    AND (tunnel IS NULL or tunnel != 'culvert')\n  ORDER BY z_order\n) AS water_lines_text",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "      (select way,waterway,lock,name,tunnel\n      from planet_osm_line\n      where waterway in ('weir','river','canal','derelict_canal','stream','drain','ditch','wadi')\n       order by z_order\n      ) as water_lines_text",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "water-lines-text",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "water-lines-text"
-    },
-    {
       "extent": [
-        -179.99999692067183,
-        -84.96651228427098,
-        179.99999692067183,
-        84.96651228427099
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
+    },
+    {
+      "name": "ferry-routes-text",
+      "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "ferry-routes-text",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n  way, name\n  FROM planet_osm_line\n  WHERE route = 'ferry'\n) AS ferry_routes_text",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way, name, admin_level from planet_osm_polygon where \"boundary\" = 'administrative' and admin_level in ('0','1','2','3','4','5','6','7','8','9','10')) as admin_text",
         "key_field": "",
-        "geometry_field": "way",
-        "extent_cache": "custom",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "dbname": "gis"
       },
-      "id": "admin-text",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "admin-text",
-      "geometry": "linestring"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
     },
     {
-      "geometry": "polygon",
+      "name": "admin-text",
+      "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "admin-text",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    name,\n    admin_level\n  FROM planet_osm_polygon\n  WHERE boundary = 'administrative'\n    AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')\n) AS admin_text",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
       "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
       ],
+      "properties": {
+        "minzoom": 16
+      },
+      "advanced": {}
+    },
+    {
+      "name": "nature-reserve-text",
+      "srs-name": "900913",
+      "geometry": "linestring",
+      "class": "",
+      "id": "nature-reserve-text",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    name,\n    way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels\n  FROM planet_osm_polygon\n  WHERE boundary = 'national_park' OR leisure = 'nature_reserve'\n) AS nature_reserve_text",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,way_area,name,boundary from planet_osm_polygon where boundary='national_park' and building is null) as national_park_boundaries",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "national-park-boundaries",
-      "class": "",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 13
+      },
+      "advanced": {}
+    },
+    {
+      "name": "amenity-low-priority",
       "srs-name": "900913",
+      "geometry": "point",
+      "class": "amenity-low-priority",
+      "id": "amenity-low-priority",
       "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "national-park-boundaries"
+      "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    railway,\n    highway,\n    barrier\n  FROM planet_osm_point\n  WHERE barrier IN ('bollard', 'gate', 'lift_gate', 'block')\n     OR highway IN ('mini_roundabout')\n     OR railway = 'level_crossing'\n  ) AS amenity_low_priority",
+        "geometry_field": "way",
+        "type": "postgis",
+        "key_field": "",
+        "dbname": "gis"
+      },
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
     },
     {
+      "name": "amenity-low-priority-poly",
+      "srs-name": "900913",
       "geometry": "polygon",
-      "extent": [
-        -179.99999692067183,
-        -84.96651228427099,
-        179.99999692067183,
-        84.96651228427098
-      ],
+      "class": "amenity-low-priority",
+      "id": "amenity-low-priority-poly",
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
       "Datasource": {
+        "extent": "-20037508,-20037508,20037508,20037508",
+        "table": "(SELECT\n    way,\n    railway,\n    highway,\n    barrier\n  FROM planet_osm_polygon\n  WHERE barrier IN ('bollard', 'gate', 'lift_gate', 'block')\n     OR highway IN ('mini_roundabout')\n     OR railway = 'level_crossing'\n  ) AS amenity_low_priority_poly",
+        "geometry_field": "way",
         "type": "postgis",
-        "table": "(select way,name,tourism from planet_osm_polygon where tourism='theme_park') as theme_park",
-        "extent": "-20037508,-19929239,20037508,19929239",
         "key_field": "",
-        "geometry_field": "way",
         "dbname": "gis"
       },
-      "id": "theme-park",
-      "class": "",
-      "srs-name": "900913",
-      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
-      "advanced": {},
-      "name": "theme-park"
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "properties": {
+        "minzoom": 14
+      },
+      "advanced": {}
     }
   ],
   "scale": 1,
+  "center": [
+    0,
+    0,
+    4
+  ],
+  "format": "png",
+  "_parts": {
+    "extents": {
+      "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "srs-name": "900913"
+    },
+    "osm2pgsql": {
+      "geometry_field": "way",
+      "type": "postgis",
+      "dbname": "gis",
+      "extent": "-20037508,-20037508,20037508,20037508",
+      "key_field": ""
+    },
+    "extents84": {
+      "srs": "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs",
+      "extent": [
+        -180,
+        -85.05112877980659,
+        180,
+        85.05112877980659
+      ],
+      "srs-name": "WGS84"
+    }
+  },
   "metatile": 2,
+  "bounds": [
+    -180,
+    -85.05112877980659,
+    180,
+    85.05112877980659
+  ],
   "name": "OpenStreetMap Carto",
+  "srs": "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over",
+  "Stylesheet": [
+    "style.mss",
+    "shapefiles.mss",
+    "landcover.mss",
+    "water.mss",
+    "water-features.mss",
+    "roads.mss",
+    "power.mss",
+    "citywalls.mss",
+    "placenames.mss",
+    "buildings.mss",
+    "stations.mss",
+    "amenity-points.mss",
+    "ferry-routes.mss",
+    "aerialways.mss",
+    "admin.mss",
+    "addressing.mss"
+  ],
+  "minzoom": 0,
+  "maxzoom": 22,
   "description": "A faithful reimplementation of the standard OpenStreetMap style"
-}
+}
\ No newline at end of file
diff --git a/project.yaml b/project.yaml
new file mode 100644
index 0000000..71c6112
--- /dev/null
+++ b/project.yaml
@@ -0,0 +1,2093 @@
+scale: 1
+metatile: 2
+name: "OpenStreetMap Carto"
+description: "A faithful reimplementation of the standard OpenStreetMap style"
+bounds: &world
+  - -180
+  - -85.05112877980659
+  - 180
+  - 85.05112877980659
+center:
+  - 0
+  - 0
+  - 4
+format: "png"
+interactivity: false
+minzoom: 0
+maxzoom: 22
+srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+
+# Various parts to be included later on
+_parts:
+  # Extents are used for tilemill, and don't actually make it to the generated XML
+  extents: &extents
+    extent: *world
+    srs-name: "900913"
+    srs: "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over"
+  extents84: &extents84
+    extent: *world
+    srs-name: "WGS84"
+    srs: "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs"
+  osm2pgsql: &osm2pgsql
+    type: "postgis"
+    dbname: "gis"
+    key_field: ""
+    geometry_field: "way"
+    extent: "-20037508,-20037508,20037508,20037508"
+
+Stylesheet:
+  - "style.mss"
+  - "shapefiles.mss"
+  - "landcover.mss"
+  - "water.mss"
+  - "water-features.mss"
+  - "roads.mss"
+  - "power.mss"
+  - "citywalls.mss"
+  - "placenames.mss"
+  - "buildings.mss"
+  - "stations.mss"
+  - "amenity-points.mss"
+  - "ferry-routes.mss"
+  - "aerialways.mss"
+  - "admin.mss"
+  - "addressing.mss"
+Layer:
+  - id: "world"
+    name: "world"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      file: "data/simplified-land-polygons-complete-3857/simplified_land_polygons.shp"
+      type: "shape"
+    advanced: {}
+    properties:
+      maxzoom: 9
+  - id: "coast-poly"
+    name: "coast-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      file: "data/land-polygons-split-3857/land_polygons.shp"
+      type: "shape"
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "builtup"
+    name: "builtup"
+    geometry: "polygon"
+    class: ""
+    extent: *world
+    srs-name: "mercator"
+    srs: "+proj=merc +datum=WGS84 +over"
+    Datasource:
+      file: "data/world_boundaries/builtup_area.shp"
+      type: "shape"
+    properties:
+      minzoom: 8
+      maxzoom: 9
+    advanced: {}
+  - id: "necountries"
+    name: "necountries"
+    class: ""
+    geometry: "linestring"
+    <<: *extents84
+    Datasource:
+      file: "data/ne_110m_admin_0_boundary_lines_land/ne_110m_admin_0_boundary_lines_land.shp"
+      type: "shape"
+    properties:
+      minzoom: 1
+      maxzoom: 3
+    advanced: {}
+  - id: "landcover-low-zoom"
+    name: "landcover-low-zoom"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, name, way_pixels,
+            COALESCE(landuse, "natural") AS feature
+          FROM (SELECT
+              way, COALESCE(name, '') AS name,
+              ('landuse_' || (CASE WHEN landuse IN ('forest') THEN landuse ELSE NULL END)) AS landuse,
+              ('natural_' || (CASE WHEN "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END)) AS "natural",
+              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+            FROM planet_osm_polygon
+            WHERE (landuse IN ('forest')
+              OR "natural" IN ('wood', 'sand', 'scree', 'shingle', 'bare_rock'))
+              AND way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) > 0.01
+              AND building IS NULL
+            ORDER BY z_order, way_area DESC
+          ) AS features
+        ) AS landcover_low_zoom
+    properties:
+      maxzoom: 9
+    advanced: {}
+  - id: "landcover"
+    name: "landcover"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, name, religion, way_pixels,
+            COALESCE(aeroway, amenity, landuse, leisure, military, "natural", power, tourism, highway, railway) AS feature 
+          FROM (SELECT 
+              way, COALESCE(name, '') AS name, 
+              ('aeroway_' || (CASE WHEN aeroway IN ('apron', 'aerodrome') THEN aeroway ELSE NULL END)) AS aeroway,
+              ('amenity_' || (CASE WHEN amenity IN ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard', 'prison', 'place_of_worship') THEN amenity ELSE NULL END)) AS amenity,
+              ('landuse_' || (CASE WHEN landuse IN ('quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'recreation_ground', 'conservation', 'village_green', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction') THEN landuse ELSE NULL END)) AS landuse,
+              ('leisure_' || (CASE WHEN leisure IN ('swimming_pool', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'golf_course', 'miniature_golf', 'picnic_table', 'sports_centre', 'stadium', 'pitch', 'track') THEN leisure ELSE NULL END)) AS leisure,
+              ('military_' || (CASE WHEN military IN ('danger_area') THEN military ELSE NULL END)) AS military,
+              ('natural_' || (CASE WHEN "natural" IN ('beach', 'heath', 'mud', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub') THEN "natural" ELSE NULL END)) AS "natural",
+              ('power_' || (CASE WHEN power IN ('station', 'sub_station', 'substation', 'generator') THEN power ELSE NULL END)) AS power,
+              ('tourism_' || (CASE WHEN tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo') THEN tourism ELSE NULL END)) AS tourism,
+              ('highway_' || (CASE WHEN highway IN ('services', 'rest_area') THEN highway ELSE NULL END)) AS highway,
+              ('railway_' || (CASE WHEN railway = 'station' THEN railway ELSE NULL END)) AS railway,
+              CASE WHEN religion IN ('christian', 'jewish') THEN religion ELSE 'INT-generic'::text END AS religion,
+              way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+            FROM planet_osm_polygon
+            WHERE (landuse IS NOT NULL
+              OR leisure IS NOT NULL
+              OR aeroway IN ('apron', 'aerodrome')
+              OR amenity IN ('parking', 'university', 'college', 'school', 'hospital', 'kindergarten', 'grave_yard', 'place_of_worship', 'prison')
+              OR military IN ('danger_area')
+              OR "natural" IN ('beach', 'heath', 'mud', 'grassland', 'wood', 'sand', 'scree', 'shingle', 'bare_rock', 'scrub')
+              OR power IN ('station', 'sub_station', 'substation', 'generator')
+              OR tourism IN ('attraction', 'camp_site', 'caravan_site', 'picnic_site', 'zoo')
+              OR highway IN ('services', 'rest_area')
+              OR railway = 'station')
+              AND way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) > 0.01
+            ORDER BY z_order, way_area DESC
+          ) AS landcover
+        ) AS features
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "landcover-line"
+    name: "landcover-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE man_made = 'cutline'
+        ) AS landcover_line
+    advanced: {}
+    properties:
+      minzoom: 14
+  - id: "water-lines-casing"
+    name: "water-lines-casing"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT 
+            way, waterway, intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel
+          FROM planet_osm_line
+          WHERE waterway IN ('stream', 'drain', 'ditch')
+        ) AS water_lines_casing
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "water-lines-low-zoom"
+    name: "water-lines-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT way, waterway, intermittent
+          FROM planet_osm_line
+          WHERE waterway = 'river'
+        ) AS water_lines_low_zoom
+    properties:
+      minzoom: 8
+      maxzoom: 11
+    advanced: {}
+  - id: "water-areas"
+    name: "water-areas"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, "natural", waterway, landuse, name, way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE
+            (waterway IN ('dock', 'riverbank', 'canal')
+              OR landuse IN ('reservoir', 'basin')
+              OR "natural" IN ('water', 'glacier', 'mud'))
+            AND building IS NULL
+            AND way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) > 0.01
+          ORDER BY z_order, way_area DESC
+        ) AS water_areas
+    properties:
+      minzoom: 4
+    advanced: {}
+  - id: "water-areas-overlay"
+    name: "water-areas-overlay"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, "natural"
+          FROM planet_osm_polygon
+          WHERE "natural" IN ('marsh', 'wetland')
+            AND building IS NULL
+          ORDER BY z_order, way_area DESC
+        ) AS water_areas_overlay
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "water-lines"
+    name: "water-lines"
+    class: "water-lines"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT 
+            way, waterway, name, intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,
+            'no' AS bridge
+          FROM planet_osm_line
+          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
+            AND (bridge IS NULL OR bridge NOT IN ('yes', 'aqueduct'))
+          ORDER BY z_order
+        ) AS water_lines
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "water-barriers-line"
+    name: "water-barriers-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT way, waterway, name 
+          FROM planet_osm_line 
+          WHERE waterway IN ('dam', 'weir', 'lock_gate')
+        ) AS water_barriers_line
+    advanced: {}
+    properties:
+      minzoom: 13
+  - id: "water-barriers-poly"
+    name: "water-barriers-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource: 
+      <<: *osm2pgsql
+      table: |-
+        (SELECT way, waterway, name 
+          FROM planet_osm_polygon 
+          WHERE waterway IN ('dam', 'weir', 'lock_gate')
+        ) AS water_barriers_poly
+    advanced: {}
+    properties:
+      minzoom: 13
+  - id: "marinas-area"
+    name: "marinas-area"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_polygon
+          WHERE leisure = 'marina'
+        ) AS marinas_area
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "piers-poly"
+    name: "piers-poly"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, man_made
+          FROM planet_osm_polygon
+          WHERE man_made IN ('pier', 'breakwater', 'groyne')
+        ) AS piers_poly
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "piers-line"
+    name: "piers-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, man_made
+          FROM planet_osm_line
+          WHERE man_made IN ('pier', 'breakwater', 'groyne')
+        ) AS piers_line
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "water-barriers-point"
+    name: "water-barriers-point"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT 
+            way, waterway 
+          FROM planet_osm_point 
+          WHERE waterway IN ('dam', 'weir', 'lock_gate')
+        ) AS water_barriers_points
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "buildings"
+    name: "buildings"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            building
+          FROM planet_osm_polygon
+          WHERE building IS NOT NULL
+            AND building != 'no'
+          ORDER BY z_order, way_area DESC
+        ) AS buildings
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "buildings-major"
+    name: "buildings-major"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            building,
+            amenity,
+            aeroway
+          FROM planet_osm_polygon
+          WHERE building IS NOT NULL
+            AND building != 'no'
+            AND (aeroway = 'terminal' OR amenity = 'place_of_worship')
+          ORDER BY z_order, way_area DESC)
+        AS buildings_major
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "tunnels"
+    name: "tunnels"
+    class: "tunnels-fill tunnels-casing access directions"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # This query is quite large, having to deal with both roads, railways and
+      # runways. To allow for ways that are both railways and roads, a UNION
+      # ALL is present, and to use an ordering different than current osm2pgsql
+      # an order is generated in SQL.
+      table: |-
+        (SELECT *
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN oneway IN ('yes', '-1') THEN oneway
+                  WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
+                  ELSE NULL
+                END AS oneway,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                NULL AS oneway,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes')
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 430),
+              ('railway_spur', 430),
+              ('railway_siding', 430),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_proposed', 20),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END
+        ) AS tunnels
+    properties:
+      group-by: "layernotnull"
+      minzoom: 10
+    advanced: {}
+  - id: "citywalls"
+    name: "citywalls"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE historic = 'citywalls')
+        AS citywalls
+    advanced: {}
+  - id: "castlewalls"
+    name: "castlewalls"
+    class: "castlewalls"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE historic = 'castle_walls'
+        ) AS castlewalls
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "castlewalls-poly"
+    name: "castlewalls-poly"
+    class: "castlewalls"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_polygon
+          WHERE historic = 'castle_walls'
+        ) AS castlewalls_poly
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "landuse-overlay"
+    name: "landuse-overlay"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, landuse, leisure
+          FROM planet_osm_polygon
+          WHERE landuse = 'military'
+            AND building IS NULL
+        ) AS landuse_overlay
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "line-barriers"
+    name: "line-barriers"
+    class: "barriers"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, barrier
+          FROM planet_osm_line
+          WHERE barrier IS NOT NULL
+        ) AS line_barriers
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "cliffs"
+    name: "cliffs"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, "natural", man_made
+          FROM planet_osm_line
+          WHERE "natural" = 'cliff' OR man_made = 'embankment'
+        ) AS cliffs
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "area-barriers"
+    name: "area-barriers"
+    class: "barriers"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, barrier
+          FROM planet_osm_polygon
+          WHERE barrier IS NOT NULL
+        ) AS area_barriers
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "ferry-routes"
+    name: "ferry-routes"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE route = 'ferry'
+        ) AS ferry_routes
+    properties:
+      minzoom: 7
+    advanced: {}
+  - id: "turning-circle-casing"
+    name: "turning-circle-casing"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT DISTINCT ON (p.way)
+            p.way AS way, l.highway AS int_tc_type,
+            CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway')
+              THEN 'INT-minor'::text
+              ELSE 'INT-normal'::text
+            END AS int_tc_service
+          FROM planet_osm_point p
+            JOIN planet_osm_line l ON ST_DWithin(p.way, l.way, 0.1) -- Assumes Mercator
+            JOIN (VALUES
+              ('tertiary', 1),
+              ('unclassified', 2),
+              ('residential', 3),
+              ('living_street', 4),
+              ('service', 5)
+              ) AS v (highway, prio)
+              ON v.highway=l.highway
+          WHERE p.highway = 'turning_circle'
+            OR p.highway = 'turning_loop'
+          ORDER BY p.way, v.prio
+        ) AS turning_circle_casing
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "highway-area-casing"
+    name: "highway-area-casing"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE((
+              'highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'track', 'path', 'platform') THEN highway ELSE NULL END)),
+              ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END))
+            ) AS feature
+          FROM planet_osm_polygon
+          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'track', 'path', 'platform')
+            OR railway IN ('platform')
+          ORDER BY z_order, way_area DESC
+        ) AS highway_area_casing
+    properties:
+      minzoom: 14
+    advanced: {}
+  - name: "roads-casing"
+    id: "roads-casing"
+    class: "roads-casing"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT *
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN oneway IN ('yes', '-1') THEN oneway
+                  WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
+                  ELSE NULL
+                END AS oneway,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                NULL AS oneway,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 430),
+              ('railway_spur', 430),
+              ('railway_siding', 430),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_proposed', 20),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END
+        ) AS roads_casing
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "highway-area-fill"
+    name: "highway-area-fill"
+    class: ""
+    # FIXME: No geometry?
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              ('highway_' || (CASE WHEN highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform', 'services') THEN highway ELSE NULL END)),
+              ('railway_' || (CASE WHEN railway IN ('platform') THEN railway ELSE NULL END)),
+              (('aeroway_' || CASE WHEN aeroway IN ('runway', 'taxiway', 'helipad') THEN aeroway ELSE NULL END))
+            ) AS feature
+          FROM planet_osm_polygon
+          WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'living_street', 'track', 'path', 'platform', 'services')
+            OR railway IN ('platform')
+            OR aeroway IN ('runway', 'taxiway', 'helipad')
+          ORDER BY z_order, way_area desc
+        ) AS highway_area_fill
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "roads-fill"
+    name: "roads-fill"
+    class: "roads-fill access directions"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT *
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN oneway IN ('yes', '-1') THEN oneway
+                  WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
+                  ELSE NULL
+                END AS oneway,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                NULL AS oneway,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE (tunnel IS NULL OR NOT tunnel IN ('yes', 'building_passage'))
+                AND (covered IS NULL OR NOT covered = 'yes')
+                AND (bridge IS NULL OR NOT bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct'))
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 430),
+              ('railway_spur', 430),
+              ('railway_siding', 430),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_proposed', 20),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END
+        ) AS roads_fill
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "turning-circle-fill"
+    name: "turning-circle-fill"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            DISTINCT on (p.way)
+            p.way AS way, l.highway AS int_tc_type,
+            CASE WHEN l.service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+              ELSE 'INT-normal'::text END AS int_tc_service
+          FROM planet_osm_point p
+            JOIN planet_osm_line l
+              ON ST_DWithin(p.way, l.way, 0.1)
+            JOIN (VALUES
+              ('tertiary', 1),
+              ('unclassified', 2),
+              ('residential', 3),
+              ('living_street', 4),
+              ('service', 5)
+            ) AS v (highway, prio)
+              ON v.highway=l.highway
+          WHERE p.highway = 'turning_circle' OR p.highway = 'turning_loop'
+          ORDER BY p.way, v.prio
+        ) AS turning_circle_fill
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "aerialways"
+    name: "aerialways"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            aerialway
+          FROM planet_osm_line
+          WHERE aerialway IS NOT NULL
+        ) AS aerialways
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "roads-low-zoom"
+    name: "roads-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway end)),
+              ('railway_' || (CASE WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' WHEN railway IN ('rail', 'tram', 'light_rail', 'funicular', 'narrow_gauge') THEN railway ELSE NULL END))
+            ) AS feature,
+            CASE WHEN tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes' THEN 'yes' ELSE 'no' END AS int_tunnel,
+            CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes' ELSE 'no' END AS link
+          FROM planet_osm_roads
+          WHERE highway IS NOT NULL
+            OR (railway IS NOT NULL AND railway != 'preserved'
+              AND (service IS NULL OR service NOT IN ('spur', 'siding', 'yard')))
+          ORDER BY z_order
+        ) AS roads_low_zoom
+    properties:
+      minzoom: 5
+      maxzoom: 9
+    advanced: {}
+  - id: "waterway-bridges"
+    name: "waterway-bridges"
+    class: "water-lines"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            name,
+            intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel,
+            'yes' AS bridge
+          FROM planet_osm_line
+          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
+            AND bridge IN ('yes', 'aqueduct')
+          ORDER BY z_order
+        ) AS waterway_bridges
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "bridges"
+    name: "bridges"
+    class: "bridges-fill bridges-casing access directions"
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT *
+          FROM ( -- subselect that contains both roads and rail/aero
+            SELECT
+                way,
+                ('highway_' || (CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END)) AS feature, --only motorway to tertiary links are accepted later on
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE
+                  WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text
+                  ELSE 'INT-normal'::text
+                END AS service,
+                CASE
+                  WHEN oneway IN ('yes', '-1') THEN oneway
+                  WHEN junction IN ('roundabout') AND (oneway IS NULL OR NOT oneway IN ('no', 'reversible')) THEN 'yes'
+                  ELSE NULL
+                END AS oneway,
+                CASE
+                  WHEN substr(highway, length(highway)-3, 4) = 'link' THEN 'yes'
+                  ELSE 'no'
+                END AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')
+                AND highway IS NOT NULL -- end of road select
+            UNION ALL
+            SELECT
+                way,
+                COALESCE(
+                  ('railway_' || (CASE WHEN railway = 'preserved' AND service IN ('spur', 'siding', 'yard') THEN 'INT-preserved-ssy'::text WHEN (railway = 'rail' AND service IN ('spur', 'siding', 'yard')) THEN 'INT-spur-siding-yard' ELSE railway END)),
+                  ('aeroway_' || aeroway)
+                ) AS feature,
+                horse,
+                foot,
+                bicycle,
+                tracktype,
+                CASE
+                  WHEN access IN ('destination') THEN 'destination'::text
+                  WHEN access IN ('no', 'private') THEN 'no'::text
+                  ELSE NULL
+                END AS access,
+                construction,
+                CASE WHEN service IN ('parking_aisle', 'drive-through', 'driveway') THEN 'INT-minor'::text ELSE 'INT-normal'::text END AS service,
+                NULL AS oneway,
+                'no' AS link,
+                CASE WHEN layer~E'^-?\\d+$' AND length(layer)<10 THEN layer::integer ELSE 0 END AS layernotnull
+              FROM planet_osm_line
+              WHERE bridge IN ('yes', 'boardwalk', 'cantilever', 'covered', 'low_water_crossing', 'movable', 'trestle', 'viaduct')
+                AND (railway IS NOT NULL OR aeroway IS NOT NULL) -- end of rail/aero select
+            ) AS features
+          JOIN (VALUES -- this join is also putting a condition on what is selected. features not matching it do not make it into the results.
+              ('railway_rail', 430),
+              ('railway_spur', 430),
+              ('railway_siding', 430),
+              ('railway_INT-preserved-ssy', 430),
+              ('railway_INT-spur-siding-yard', 430),
+              ('railway_subway', 420),
+              ('railway_narrow_gauge', 420),
+              ('railway_light_rail', 420),
+              ('railway_preserved', 420),
+              ('railway_funicular', 420),
+              ('railway_monorail', 420),
+              ('railway_miniature', 420),
+              ('railway_turntable', 420),
+              ('railway_tram', 410),
+              ('railway_disused', 400),
+              ('railway_construction', 400),
+              ('highway_motorway', 380),
+              ('highway_trunk', 370),
+              ('highway_primary', 360),
+              ('highway_secondary', 350),
+              ('highway_tertiary', 340),
+              ('highway_residential', 330),
+              ('highway_unclassified', 330),
+              ('highway_road', 330),
+              ('highway_living_street', 320),
+              ('highway_pedestrian', 310),
+              ('highway_raceway', 300),
+              ('highway_motorway_link', 240),
+              ('highway_trunk_link', 230),
+              ('highway_primary_link', 220),
+              ('highway_secondary_link', 210),
+              ('highway_tertiary_link', 200),
+              ('highway_service', 150),
+              ('highway_track', 110),
+              ('highway_path', 100),
+              ('highway_footway', 100),
+              ('highway_bridleway', 100),
+              ('highway_cycleway', 100),
+              ('highway_steps', 100),
+              ('highway_platform', 90),
+              ('railway_platform', 90),
+              ('aeroway_runway', 60),
+              ('aeroway_taxiway', 50),
+              ('highway_proposed', 20),
+              ('highway_construction', 10)
+            ) AS ordertable (feature, prio)
+            USING (feature)
+          ORDER BY
+            layernotnull,
+            prio,
+            CASE WHEN access IN ('no', 'private') THEN 0 WHEN access IN ('destination') THEN 1 ELSE 2 END
+        ) AS bridges
+    properties:
+      group-by: "layernotnull"
+      minzoom: 10
+    advanced: {}
+  - id: "guideways"
+    name: "guideways"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way FROM planet_osm_line WHERE highway = 'bus_guideway' AND (tunnel IS NULL OR tunnel != 'yes')) AS guideways
+    properties:
+      minzoom: 13
+    advanced: {}
+  - name: "admin-low-zoom"
+    id: "admin-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            admin_level
+          FROM planet_osm_roads
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4')
+          ORDER BY admin_level DESC
+        ) AS admin_low_zoom
+    properties:
+      maxzoom: 10
+    advanced: {}
+  - id: "admin-mid-zoom"
+    name: "admin-mid-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            admin_level
+          FROM planet_osm_roads
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8')
+          ORDER BY admin_level DESC
+        ) AS admin_mid_zoom
+    properties:
+      minzoom: 11
+      maxzoom: 12
+    advanced: {}
+  - id: "admin-high-zoom"
+    name: "admin-high-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            admin_level
+          FROM planet_osm_roads
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')
+          ORDER BY admin_level::integer DESC -- With 10 as a valid value, we need to do a numeric ordering, not a text ordering
+        ) AS admin_high_zoom
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "power-minorline"
+    name: "power-minorline"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way FROM planet_osm_line WHERE "power" = 'minor_line') AS power_minorline
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "power-line"
+    name: "power-line"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way FROM planet_osm_line WHERE "power" = 'line') AS power_line
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "nature-reserve-boundaries"
+    name: "nature-reserve-boundaries"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            boundary,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE (boundary = 'national_park' OR leisure = 'nature_reserve')
+            AND building IS NULL
+        ) AS national_park_boundaries
+    properties:
+      minzoom: 7
+    advanced: {}
+  - id: "theme-park"
+    name: "theme-park"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way, name, tourism FROM planet_osm_polygon WHERE tourism = 'theme_park') AS theme_park
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "placenames-large"
+    name: "placenames-large"
+    class: "country state"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            name,
+            ref,
+            admin_level
+          FROM planet_osm_polygon
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('2', '4')
+        ) AS placenames_large
+    properties:
+      minzoom: 2
+    advanced: {}
+  - id: "nepopulated"
+    name: "nepopulated"
+    class: ""
+    geometry: "point"
+    <<: *extents84
+    Datasource:
+      file: "data/ne_10m_populated_places/ne_10m_populated_places_fixed.shp"
+      type: "shape"
+      encoding: "windows-1252"
+    properties:
+      minzoom: 3
+      maxzoom: 4
+    advanced:
+      encoding: "windows-1252"
+  - id: "placenames-capital"
+    name: "placenames-capital"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            place,
+            name,
+            ref
+          FROM planet_osm_point
+          WHERE place IN ('city', 'town')
+            AND capital IN ('yes', '4')
+        ) AS placenames_capital
+    properties:
+      minzoom: 5
+      maxzoom: 14
+    advanced: {}
+  - id: "placenames-medium"
+    name: "placenames-medium"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            place,
+            name
+          FROM planet_osm_point
+          WHERE place IN ('city', 'town')
+            AND (capital IS NULL OR capital NOT IN ('yes', '4'))
+        ) AS placenames_medium
+    properties:
+      minzoom: 6
+    advanced: {}
+  - id: "placenames-small"
+    name: "placenames-small"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way, place, name
+              FROM planet_osm_point
+              WHERE place IN ('suburb', 'village', 'hamlet', 'neighbourhood', 'locality', 'isolated_dwelling', 'farm')
+              ) AS placenames_small
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "stations"
+    class: "stations"
+    name: "stations"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            railway,
+            aerialway,
+            disused
+          FROM planet_osm_point
+          WHERE railway IN ('station', 'halt', 'tram_stop', 'subway_entrance')
+            OR aerialway = 'station'
+        ) AS stations
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "stations-poly"
+    name: "stations-poly"
+    class: "stations"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            railway,
+            aerialway,
+            disused
+        FROM planet_osm_polygon
+        WHERE railway IN ('station', 'halt', 'tram_stop')
+          OR aerialway = 'station'
+        ) AS stations_poly
+    properties:
+      minzoom: 12
+    advanced: {}
+  - id: "trees"
+    name: "trees"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource: 
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way, "natural"
+          FROM planet_osm_point
+          WHERE "natural" = 'tree'
+        UNION ALL
+        SELECT
+            way, "natural"
+          FROM planet_osm_line
+          WHERE "natural" = 'tree_row'
+        ) AS trees
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "amenity-points-poly"
+    name: "amenity-points-poly"
+    class: "points"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 'car_rental', 'car_sharing', 'cinema', 'fire_station', 'fuel', 'hospital', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'theatre', 'toilets', 'drinking_wate [...]
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bakery', 'books', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle', 'mall', 'pet') THEN shop WHEN shop IN ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'boutique', 'builder', 'build [...]
+              'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table') THEN leisure ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring') THEN "natural" ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_'|| CASE WHEN highway IN ('bus_stop', 'traffic_signals') THEN highway ELSE NULL END,
+              'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END
+            ) AS feature,
+            access,
+            religion,
+            denomination,
+            "generator:source",
+            power_source
+          FROM planet_osm_polygon
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE aeroway IN ('helipad', 'aerodrome')
+            OR tourism IN ('alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')
+            OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 'car_rental', 'car_sharing', 'cinema', 'fire_station', 'fuel', 'hospital', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'theatre', 'toilets', 'drinking_water', 'prison')
+            OR shop IS NOT NULL -- skip checking a huge list and use a null check
+            OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table')
+            OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill')
+            OR "natural" IN ('peak', 'volcano', 'saddle', 'spring')
+            OR historic IN ('memorial', 'archaeological_site')
+            OR highway IN ('bus_stop', 'traffic_signals')
+            OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind'))
+          ORDER BY way_area desc
+        ) AS amenity_points_poly
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "amenity-points"
+    name: "amenity-points"
+    class: "points"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 'hotel', 'motel', 'information', 'museum', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 'car_rental', 'car_sharing', 'cinema', 'fire_station', 'fuel', 'hospital', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'theatre', 'toilets', 'drinking_wate [...]
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bakery', 'books', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle', 'mall', 'pet') THEN shop WHEN shop IN ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'boutique', 'builder', 'build [...]
+              'leisure_' || CASE WHEN leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway') THEN leisure ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance') THEN "natural" ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_'|| CASE WHEN highway IN ('bus_stop', 'traffic_signals', 'ford') THEN highway ELSE NULL END,
+              'power_' || CASE WHEN power IN ('generator') THEN power ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('viewpoint') THEN tourism ELSE NULL END
+            ) AS feature,
+            access,
+            religion,
+            denomination,
+            "generator:source",
+            power_source
+          FROM planet_osm_point
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE aeroway IN ('helipad', 'aerodrome')
+            OR tourism IN ('alpine_hut', 'camp_site', 'caravan_site', 'chalet', 'guest_house', 'hostel', 'hotel', 'motel', 'information', 'museum', 'viewpoint', 'picnic_site')
+            OR amenity IN ('shelter', 'atm', 'bank', 'bar', 'bicycle_rental', 'bus_station', 'cafe', 'car_rental', 'car_sharing', 'cinema', 'fire_station', 'fuel', 'hospital', 'embassy', 'library', 'courthouse', 'townhall', 'parking', 'pharmacy', 'doctors', 'dentist', 'place_of_worship', 'police', 'post_box', 'post_office', 'pub', 'biergarten', 'recycling', 'restaurant', 'food_court', 'fast_food', 'telephone', 'emergency_phone', 'theatre', 'toilets', 'drinking_water', 'prison')
+            OR shop IS NOT NULL -- skip checking a huge list and use a null check
+            OR leisure IN ('water_park', 'playground', 'miniature_golf', 'golf_course', 'picnic_table', 'slipway')
+            OR man_made IN ('mast', 'water_tower', 'lighthouse', 'windmill')
+            OR "natural" IN ('peak', 'volcano', 'saddle', 'spring', 'cave_entrance')
+            OR historic IN ('memorial', 'archaeological_site')
+            OR highway IN ('bus_stop', 'traffic_signals', 'ford')
+            OR (power = 'generator' AND ("generator:source" = 'wind' OR power_source = 'wind'))
+          ) AS amenity_points
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "power-towers"
+    name: "power-towers"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way FROM planet_osm_point WHERE power = 'tower') AS power_towers
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "power-poles"
+    name: "power-poles"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way FROM planet_osm_point WHERE power = 'pole') AS power_poles
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "roads-text-ref-low-zoom"
+    name: "roads-text-ref-low-zoom"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way, highway, height, width, refs FROM
+          (SELECT
+              way, highway,
+              array_length(refs,1) AS height,
+              (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,
+              array_to_string(refs, E'\n') AS refs
+            FROM (
+              SELECT
+                  way,
+                  highway,
+                  string_to_array(ref, ';') AS refs
+              FROM planet_osm_roads
+                WHERE highway IN ('motorway', 'trunk', 'primary', 'secondary')
+                AND ref IS NOT NULL
+              ) AS p) AS q
+          WHERE height <= 4 AND width <= 11) AS roads_text_ref_low_zoom
+    properties:
+      minzoom: 10
+      maxzoom: 12
+    advanced: {}
+  - id: "junctions"
+    name: "junctions"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+             (SELECT way, highway, junction, ref, name
+              FROM planet_osm_point
+              WHERE highway = 'motorway_junction' OR highway = 'traffic_signals' OR junction = 'yes'
+             ) AS junctions
+    properties:
+      minzoom: 11
+    advanced: {}
+  - id: "roads-text-ref"
+    name: "roads-text-ref"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT way, highway, height, width, refs FROM
+          (SELECT
+              way, highway,
+              array_length(refs,1) AS height,
+              (SELECT MAX(char_length(ref)) FROM unnest(refs) AS u(ref)) AS width,
+              array_to_string(refs, E'\n') AS refs
+            FROM (
+              SELECT
+                  way,
+                  COALESCE(
+                    CASE WHEN highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') THEN highway ELSE NULL END,
+                    CASE WHEN aeroway IN ('runway', 'taxiway') THEN aeroway ELSE NULL END
+                  ) AS highway,
+                  string_to_array(ref, ';') AS refs
+                FROM planet_osm_line
+                  WHERE (highway IN ('motorway', 'trunk', 'primary', 'secondary', 'tertiary', 'unclassified', 'residential') OR aeroway IN ('runway', 'taxiway'))
+                    AND ref IS NOT NULL
+              ) AS p) AS q
+          WHERE height <= 4 AND width <= 11) AS roads_text_ref
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "roads-area-text-name"
+    name: "roads-area-text-name"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+              (SELECT way, way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels, highway, name
+               FROM planet_osm_polygon
+               WHERE highway IN ('residential', 'unclassified', 'pedestrian', 'service', 'footway', 'cycleway', 'living_street', 'track', 'path', 'platform') OR railway IN ('platform') AND name IS NOT NULL
+              ) AS roads_area_text_name
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "roads-text-name"
+    name: "roads-text-name"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT way,
+            CASE WHEN substr(highway, length(highway)-3, 4) = 'link' THEN substr(highway, 0, length(highway)-4) ELSE highway END,
+            CASE WHEN (tunnel = 'yes' OR tunnel = 'building_passage' OR covered = 'yes') THEN 'yes' ELSE 'no' END AS tunnel,
+            CASE WHEN construction IN ('service', 'footway', 'cycleway', 'bridleway', 'path', 'track') THEN 'yes' ELSE 'no' END AS int_construction_minor,
+            name
+          FROM planet_osm_line
+          WHERE highway IN ('motorway', 'motorway_link', 'trunk', 'trunk_link', 'primary', 'primary_link', 'secondary', 'secondary_link', 'tertiary', 'tertiary_link', 'residential', 'unclassified', 'road', 'service', 'pedestrian', 'raceway', 'living_street', 'construction', 'proposed')
+            AND name IS NOT NULL
+        ) AS roads_text_name
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "paths-text-name"
+    name: "paths-text-name"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+              (SELECT way, highway, name
+               FROM planet_osm_line
+               WHERE highway IN ('bridleway', 'footway', 'cycleway', 'path', 'track', 'steps')
+                 AND name IS NOT NULL
+              ) AS paths_text_name
+    properties:
+      minzoom: 15
+    advanced: {}
+  - id: "text-poly-low-zoom"
+    name: "text-poly-low-zoom"
+    class: "text-low-zoom"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            COALESCE(
+              'landuse_' || CASE WHEN landuse IN ('forest') THEN landuse ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock') THEN "natural" ELSE NULL END,
+              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END
+            ) AS feature,
+            name,
+            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building -- always no with the where conditions
+          FROM planet_osm_polygon
+          WHERE (landuse IN ('forest')
+              OR "natural" IN ('wood', 'glacier', 'sand', 'scree', 'shingle', 'bare_rock')
+              OR boundary IN ('national_park'))
+            AND building IS NULL
+          ORDER BY way_area DESC
+        ) AS text_poly_low_zoom
+    properties:
+      minzoom: 7
+      maxzoom: 9
+    advanced: {}
+  - id: "text-poly"
+    name: "text-poly"
+    class: "text"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # Include values that are rendered as icon without label to prevent mismatch between icons and labels,
+      # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678
+      table: |-
+        (SELECT
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 'courthouse', 'townhall', 'cinema', 'parking', 'police', 'fire_station', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental', 'car_sharing', 'post_box', 'post_offi [...]
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bakery', 'books', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle', 'mall', 'pet') THEN shop WHEN shop IN ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'boutique', 'builder', 'build [...]
+              'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 'slipway') THEN leisure ELSE NULL END,
+              'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'conservation', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military') THEN landuse ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'lake', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier') THEN "natural" ELSE NULL END,
+              'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
+              'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'ford') THEN highway ELSE NULL END,
+              'power_' || CASE WHEN power IN ('station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,
+              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
+              'waterway_' || CASE WHEN waterway IN ('dam') THEN waterway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('attraction') THEN tourism ELSE NULL END
+            ) AS feature,
+            access,
+            name,
+            ref,
+            way_area,
+            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
+          FROM planet_osm_polygon
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')
+            OR tourism IN ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 'museum', 'attraction', 'zoo', 'information', 'picnic_site')
+            OR amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 'courthouse', 'townhall', 'cinema', 'parking', 'police', 'fire_station', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental', 'car_sharing', 'post_box', 'post_office', 'recycling', 'tele [...]
+            OR shop IS NOT NULL -- skip checking a huge list and use a null check
+            OR leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 'slipway')
+            OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'conservation', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military')
+            OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower', 'pier', 'breakwater', 'groyne')
+            OR "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'lake', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier')
+            OR place IN ('island', 'islet')
+            OR military IN ('danger_area')
+            OR historic IN ('memorial', 'archaeological_site')
+            OR highway IN ('services', 'rest_area', 'bus_stop', 'ford')
+            OR power IN ('station', 'generator', 'sub_station', 'substation')
+            OR boundary IN ('national_park')
+            OR waterway = 'dam'
+          ORDER BY way_area desc
+        ) AS text_poly
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "text-line"
+    name: "text-line"
+    class: "text"
+    geometry: "linestring"
+    <<: *extents
+    Datasource: 
+      <<: *osm2pgsql
+      table: |-
+        (SELECT way, NULL as way_pixels, COALESCE('man_made_' || man_made, 'waterway_' || waterway) AS feature, access, NULL as ele, name, ref, NULL AS way_area,
+         CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
+         FROM planet_osm_line
+         WHERE man_made IN ('pier', 'breakwater', 'groyne')
+            OR waterway IN ('dam', 'weir')
+        ) AS text_line
+    advanced: {}
+  - id: "text-point"
+    name: "text-point"
+    class: "text"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      # Include values that are rendered as icon without label to prevent mismatch between icons and labels,
+      # see https://github.com/gravitystorm/openstreetmap-carto/pull/1349#issuecomment-77805678
+      table: |-
+        (SELECT
+            way,
+            NULL AS way_pixels,
+            COALESCE(
+              'aeroway_' || CASE WHEN aeroway IN ('gate', 'apron', 'helipad', 'aerodrome') THEN aeroway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 'museum', 'zoo', 'information', 'picnic_site') THEN tourism ELSE NULL END,
+              'amenity_' || CASE WHEN amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 'courthouse', 'townhall', 'cinema', 'parking', 'police', 'fire_station', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental', 'car_sharing', 'post_box', 'post_offi [...]
+              'shop_' || CASE WHEN shop IN ('supermarket', 'bakery', 'books', 'butcher', 'clothes', 'fashion', 'convenience', 'department_store', 'doityourself', 'florist', 'hairdresser', 'car', 'car_repair', 'bicycle', 'mall', 'pet') THEN shop WHEN shop IN ('accessories', 'alcohol', 'antique', 'antiques', 'appliance', 'art', 'baby_goods', 'bag', 'bags', 'bakery', 'bathroom_furnishing', 'beauty', 'bed', 'betting', 'beverages', 'bicycle', 'boat', 'bookmaker', 'boutique', 'builder', 'build [...]
+              'leisure_' || CASE WHEN leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 'slipway') THEN leisure ELSE NULL END,
+              'landuse_' || CASE WHEN landuse IN ('reservoir', 'basin', 'recreation_ground', 'conservation', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military') THEN landuse ELSE NULL END,
+              'man_made_' || CASE WHEN man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower') THEN man_made ELSE NULL END,
+              'natural_' || CASE WHEN "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'lake', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier') THEN "natural" ELSE NULL END,
+              'place_' || CASE WHEN place IN ('island', 'islet') THEN place ELSE NULL END,
+              'military_' || CASE WHEN military IN ('danger_area') THEN military ELSE NULL END,
+              'historic_' || CASE WHEN historic IN ('memorial', 'archaeological_site') THEN historic ELSE NULL END,
+              'highway_' || CASE WHEN highway IN ('services', 'rest_area', 'bus_stop', 'ford') THEN highway ELSE NULL END,
+              'power_' || CASE WHEN power IN ('station', 'generator', 'sub_station', 'substation') THEN power ELSE NULL END,
+              'boundary_' || CASE WHEN boundary IN ('national_park') THEN boundary ELSE NULL END,
+              'waterway_' || CASE WHEN waterway IN ('dam', 'weir') THEN waterway ELSE NULL END,
+              'tourism_' || CASE WHEN tourism IN ('attraction', 'viewpoint') THEN tourism ELSE NULL END
+            ) AS feature,
+            access,
+            (CASE WHEN "natural" IN ('peak', 'volcano', 'saddle') OR tourism = 'alpine_hut' OR amenity = 'shelter' THEN CASE WHEN ele IS NOT NULL THEN CASE WHEN name IS NOT NULL THEN CONCAT(name, E'\n', ele) ELSE ele END ELSE name END ELSE name END) AS name,
+            ref,
+            NULL AS way_area,
+            CASE WHEN building = 'no' OR building IS NULL THEN 'no' ELSE 'yes' END AS is_building
+          FROM planet_osm_point
+          -- The upcoming where clause is needed for performance only, as the CASE statements would end up doing the equivalent filtering
+          WHERE aeroway IN ('gate', 'apron', 'helipad', 'aerodrome')
+            OR tourism IN ('alpine_hut', 'hotel', 'motel', 'hostel', 'chalet', 'guest_house', 'camp_site', 'caravan_site', 'theme_park', 'museum', 'attraction', 'zoo', 'information', 'viewpoint', 'picnic_site')
+            OR amenity IN ('pub', 'restaurant', 'food_court', 'cafe', 'fast_food', 'biergarten', 'bar', 'library', 'theatre', 'courthouse', 'townhall', 'cinema', 'parking', 'police', 'fire_station', 'place_of_worship', 'grave_yard', 'shelter', 'bank', 'embassy', 'fuel', 'bus_station', 'prison', 'university', 'school', 'college', 'kindergarten', 'hospital', 'pharmacy', 'doctors', 'dentist', 'atm', 'bicycle_rental', 'car_rental', 'car_sharing', 'post_box', 'post_office', 'recycling', 'tele [...]
+            OR shop IS NOT NULL -- skip checking a huge list and use a null check
+            OR leisure IN ('swimming_pool', 'water_park', 'miniature_golf', 'golf_course', 'sports_centre', 'stadium', 'track', 'pitch', 'playground', 'park', 'recreation_ground', 'common', 'garden', 'nature_reserve', 'marina', 'slipway')
+            OR landuse IN ('reservoir', 'basin', 'recreation_ground', 'conservation', 'village_green', 'quarry', 'vineyard', 'orchard', 'cemetery', 'residential', 'garages', 'meadow', 'grass', 'allotments', 'forest', 'farmyard', 'farm', 'farmland', 'retail', 'industrial', 'railway', 'commercial', 'brownfield', 'landfill', 'construction', 'military')
+            OR man_made IN ('lighthouse', 'windmill', 'mast', 'water_tower')
+            OR "natural" IN ('wood', 'peak', 'volcano', 'saddle', 'cave_entrance', 'water', 'lake', 'mud', 'wetland', 'marsh', 'bay', 'spring', 'scree', 'shingle', 'bare_rock', 'sand', 'heath', 'grassland', 'scrub', 'beach', 'glacier')
+            OR place IN ('island', 'islet')
+            OR military IN ('danger_area')
+            OR historic IN ('memorial', 'archaeological_site')
+            OR highway IN ('bus_stop', 'services', 'rest_area', 'bus_stop', 'ford')
+            OR power IN ('station', 'generator', 'sub_station', 'substation')
+            OR boundary IN ('national_park')
+            OR waterway IN ('dam', 'weir')
+          ) AS text
+    properties:
+      minzoom: 10
+    advanced: {}
+  - id: "building-text"
+    name: "building-text"
+    class: ""
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            name,
+            way,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE building IS NOT NULL
+            AND building NOT IN ('no', 'station', 'supermarket')
+          ORDER BY way_area DESC
+        ) AS building_text
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "interpolation"
+    name: "interpolation"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way
+          FROM planet_osm_line
+          WHERE "addr:interpolation" IS NOT NULL
+        ) AS interpolation
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "housenumbers"
+    name: "housenumbers"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            "addr:housenumber",
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE "addr:housenumber" IS NOT NULL
+            AND building IS NOT NULL
+        UNION ALL
+        SELECT
+            way,
+            "addr:housenumber",
+            NULL AS way_pixels
+          FROM planet_osm_point
+          WHERE "addr:housenumber" IS NOT NULL
+          ORDER BY way_pixels DESC NULLS LAST
+        ) AS housenumbers
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "housenames"
+    name: "housenames"
+    class: ""
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            "addr:housename",
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE "addr:housename" IS NOT NULL
+            AND building IS NOT NULL
+        UNION ALL
+        SELECT
+            way,
+            "addr:housename",
+            NULL AS way_pixels
+          FROM planet_osm_point WHERE "addr:housename" IS NOT NULL
+        ORDER BY way_pixels DESC NULLS LAST
+        ) AS housenames
+    properties:
+      minzoom: 17
+    advanced: {}
+  - id: "water-lines-text"
+    name: "water-lines-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            waterway,
+            lock,
+            name,
+            intermittent,
+            CASE WHEN tunnel IN ('yes', 'culvert') THEN 'yes' ELSE 'no' END AS int_tunnel
+          FROM planet_osm_line
+          WHERE waterway IN ('river', 'canal', 'derelict_canal', 'stream', 'drain', 'ditch', 'wadi')
+            AND (tunnel IS NULL or tunnel != 'culvert')
+          ORDER BY z_order
+        ) AS water_lines_text
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "ferry-routes-text"
+    name: "ferry-routes-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |2-
+        (SELECT
+          way, name
+          FROM planet_osm_line
+          WHERE route = 'ferry'
+        ) AS ferry_routes_text
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "admin-text"
+    name: "admin-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            admin_level
+          FROM planet_osm_polygon
+          WHERE boundary = 'administrative'
+            AND admin_level IN ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10')
+        ) AS admin_text
+    properties:
+      minzoom: 16
+    advanced: {}
+  - id: "nature-reserve-text"
+    name: "nature-reserve-text"
+    class: ""
+    geometry: "linestring"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            name,
+            way_area/NULLIF(!pixel_width!::real*!pixel_height!::real,0) AS way_pixels
+          FROM planet_osm_polygon
+          WHERE boundary = 'national_park' OR leisure = 'nature_reserve'
+        ) AS nature_reserve_text
+    properties:
+      minzoom: 13
+    advanced: {}
+  - id: "amenity-low-priority"
+    name: "amenity-low-priority"
+    class: "amenity-low-priority"
+    geometry: "point"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            railway,
+            highway,
+            barrier
+          FROM planet_osm_point
+          WHERE barrier IN ('bollard', 'gate', 'lift_gate', 'block')
+             OR highway IN ('mini_roundabout')
+             OR railway = 'level_crossing'
+          ) AS amenity_low_priority
+    properties:
+      minzoom: 14
+    advanced: {}
+  - id: "amenity-low-priority-poly"
+    name: "amenity-low-priority-poly"
+    class: "amenity-low-priority"
+    geometry: "polygon"
+    <<: *extents
+    Datasource:
+      <<: *osm2pgsql
+      table: |-
+        (SELECT
+            way,
+            railway,
+            highway,
+            barrier
+          FROM planet_osm_polygon
+          WHERE barrier IN ('bollard', 'gate', 'lift_gate', 'block')
+             OR highway IN ('mini_roundabout')
+             OR railway = 'level_crossing'
+          ) AS amenity_low_priority_poly
+    properties:
+      minzoom: 14
+    advanced: {}
diff --git a/roads.mss b/roads.mss
index a841e93..edf282a 100644
--- a/roads.mss
+++ b/roads.mss
@@ -7,9 +7,10 @@
 @secondary-fill: #f9d6aa;
 @tertiary-fill: #f8f8ba;
 @residential-fill: #ffffff;
- at service-fill: #ffffff;
+ at service-fill: @residential-fill;
 @living-street-fill: #ccc;
 @pedestrian-fill: #ededed;
+ at raceway-fill: pink;
 @road-fill: #ddd;
 @path-fill: black;
 @footway-fill: salmon;
@@ -17,8 +18,6 @@
 @cycleway-fill: blue;
 @bridleway-fill: green;
 @track-fill: #996600;
- at track-grade1-fill: #b37700;
- at track-grade2-fill: #a87000;
 @aeroway-fill: #bbc;
 @runway-fill: @aeroway-fill;
 @taxiway-fill: @aeroway-fill;
@@ -31,10 +30,9 @@
 @secondary-casing: #cca16a;
 @tertiary-casing: #c6c68a;
 @residential-casing: #bbb;
- at service-casing: #999;
- at living-street-casing: @default-casing;
- at living-street-tunnel-casing: #bbb;
- at pedestrian-casing: grey;
+ at service-casing: @residential-casing;
+ at living-street-casing: #999;
+ at pedestrian-casing: @residential-casing;
 @path-casing: @default-casing;
 @footway-casing: @default-casing;
 @steps-casing: @default-casing;
@@ -45,7 +43,6 @@
 @residential-construction: #aaa;
 @service-construction: #aaa;
 
- at permissive-marking: #cf9;
 @destination-marking: #c2e0ff;
 @private-marking: #efa9a9;
 
@@ -57,55 +54,82 @@
 @primary-tunnel-fill: lighten(@primary-fill, 10%);
 @secondary-tunnel-fill: lighten(@secondary-fill, 5%);
 @tertiary-tunnel-fill: lighten(@tertiary-fill, 5%);
- at residential-tunnel-fill: lighten(@residential-fill, 10%);
+ at residential-tunnel-fill: darken(@residential-fill, 5%);
 @living-street-tunnel-fill: lighten(@living-street-fill, 10%);
 
- at motorway-width-z12:              3;
+ at motorway-width-z12:              3.5;
 @motorway-link-width-z12:         1.5;
 @trunk-width-z12:                 3.5;
 @primary-width-z12:               3.5;
 @secondary-width-z12:             3;
+ at tertiary-width-z12:              3;
 
- at motorway-width-z13:              6.5;
+ at motorway-width-z13:              7;
 @motorway-link-width-z13:         4.5;
- at trunk-width-z13:                 8.5;
- at primary-width-z13:               8.5;
- at secondary-width-z13:             9.5;
- at tertiary-width-z13:              6;
+ at trunk-width-z13:                 7;
+ at primary-width-z13:               7;
+ at secondary-width-z13:             7;
+ at tertiary-width-z13:              5;
 @residential-width-z13:           3;
+ at living-street-width-z13:         2;
+ at pedestrian-width-z13:            2;
+ at bridleway-width-z13:             0.3;
+ at footway-width-z13:               0.7;
+ at cycleway-width-z13:              0.7;
+ at path-width-z13:                  0.2;
+ at track-width-z13:                 0.5;
+ at track-grade1-width-z13:          0.5;
+ at track-grade2-width-z13:          0.5;
+ at steps-width-z13:                 0.7;
 
 @tertiary-width-z14:              7.5;
 @residential-width-z14:           4.5;
+ at living-street-width-z14:         4;
+ at pedestrian-width-z14:            4;
+ at service-width-z14:               2.5;
 
- at motorway-width-z15:             10.3;
+ at motorway-width-z15:             12.8;
 @motorway-link-width-z15:         7.8;
 @trunk-width-z15:                12.8;
 @primary-width-z15:              12.8;
 @secondary-width-z15:            12.8;
 @tertiary-width-z15:             11.2;
- at tertiary-link-width-z15:        11;
 @residential-width-z15:           8.3;
+ at living-street-width-z15:         6;
+ at pedestrian-width-z15:            6;
+ at bridleway-width-z15:             1.2;
+ at footway-width-z15:               1.5;
+ at cycleway-width-z15:              1.2;
+ at path-width-z15:                  0.5;
+ at track-width-z15:                 1.5;
+ at track-grade1-width-z15:          0.75;
+ at track-grade2-width-z15:          0.75;
+ at steps-width-z15:                 4;
 
 @residential-width-z16:          11.2;
+ at living-street-width-z16:         9;
+ at pedestrian-width-z16:            9;
+ at service-width-z16:               6;
+ at minor-service-width-z16:         4;
 
- at motorway-width-z17:             13.5; // shouldn't be narrower than trunk!
+ at motorway-width-z17:             18;
 @motorway-link-width-z17:        11.5;
 @trunk-width-z17:                18;
 @primary-width-z17:              18;
 @secondary-width-z17:            18;
 @tertiary-width-z17:             15.5;
- at tertiary-link-width-z17:        16;
 @residential-width-z17:          15.5;
+ at living-street-width-z17:        14;
+ at pedestrian-width-z17:           14;
+ at service-width-z17:               7;
 
 @casing-width-z12:                0.5;
- at casing-width-z13:                0.75;
+ at casing-width-z13:                0.5;
 @residential-casing-width-z13:    0.5;
- at casing-width-z14:                0.75;
- at casing-width-z15:                0.9;
- at tertiary-link-casing-width-z15:  0.8;
- at casing-width-z16:                0.9;
- at casing-width-z17:                1.25;
- at tertiary-link-casing-width-z17:  1.5;
+ at casing-width-z14:                0.5;
+ at casing-width-z15:                0.7;
+ at casing-width-z16:                0.7;
+ at casing-width-z17:                1;
 
 @bridge-casing-width-z12:         0.5;
 @bridge-casing-width-z13:         0.5;
@@ -114,128 +138,11 @@
 @bridge-casing-width-z16:         0.75;
 @bridge-casing-width-z17:         0.75;
 
-.roads-casing, .bridges-casing, .tunnels-casing {
-  ::casing_links {
-    [feature = 'highway_raceway'] {
-      [zoom >= 12] {
-        line-color: pink;
-        line-width: 1.2;
-        line-join: round;
-        line-cap: round;
-      }
-      [zoom >= 13] { line-width: 4; }
-      [zoom >= 15] { line-width: 7; }
-    }
-
-    [feature = 'highway_motorway_link'] {
-      [zoom >= 12] {
-        line-color: @motorway-casing;
-        line-width: @motorway-link-width-z12;
-        [zoom >= 13] { line-width: @motorway-link-width-z13; }
-        [zoom >= 15] { line-width: @motorway-link-width-z15; }
-        [zoom >= 17] { line-width: @motorway-link-width-z17; }
-        .roads-casing {
-          line-join: round;
-        }
-        .tunnels-casing {
-          line-dasharray: 4,2;
-        }
-        .bridges-casing {
-          line-join: round;
-          [zoom >= 13] { line-color: @bridge-casing; }
-        }
-      }
-    }
-
-    [feature = 'highway_trunk_link'] {
-      [zoom >= 12] {
-        line-width: @trunk-width-z12;
-        [zoom >= 13] { line-width: @trunk-width-z13; }
-        [zoom >= 15] { line-width: @trunk-width-z15; }
-        [zoom >= 17] { line-width: @trunk-width-z17; }
-        line-color: @trunk-casing;
-        .roads-casing {
-          line-join: round;
-          line-cap: round;
-        }
-        .tunnels-casing {
-          line-dasharray: 4,2;
-        }
-        .bridges-casing {
-          line-join: round;
-          [zoom >= 13] { line-color: @bridge-casing; }
-        }
-      }
-    }
-
-    [feature = 'highway_primary_link'] {
-      [zoom >= 12] {
-        line-color: @primary-casing;
-        line-width: @primary-width-z12;
-        [zoom >= 13] { line-width: @primary-width-z13; }
-        [zoom >= 15] { line-width: @primary-width-z15; }
-        [zoom >= 17] { line-width: @primary-width-z17; }
-        .roads-casing {
-          line-join: round;
-          line-cap: round;
-        }
-        .tunnels-casing {
-          line-dasharray: 4,2;
-        }
-        .bridges-casing {
-          line-join: round;
-          [zoom >= 13] { line-color: @bridge-casing; }
-        }
-      }
-    }
-
-    [feature = 'highway_secondary_link'] {
-      [zoom >= 12] {
-        line-color: @secondary-casing;
-        line-width: @secondary-width-z12;
-        [zoom >= 13] { line-width: @secondary-width-z13; }
-        [zoom >= 15] { line-width: @secondary-width-z15; }
-        [zoom >= 17] { line-width: @secondary-width-z17; }
-        .roads-casing {
-          line-cap: round;
-          line-join: round;
-        }
-        .tunnels-casing {
-          line-dasharray: 4,2;
-        }
-        .bridges-casing {
-          [zoom >= 13] {
-            line-color: @bridge-casing;
-            line-join: round;
-          }
-        }
-      }
-    }
-
-    [feature = 'highway_tertiary_link'] {
-      [zoom >= 13] {
-        line-color: @tertiary-casing;
-        line-width: @tertiary-width-z13;
-        [zoom >= 14] { line-width: @tertiary-width-z14; }
-        [zoom >= 15] { line-width: @tertiary-link-width-z15; }
-        [zoom >= 17] { line-width: @tertiary-link-width-z17; }
-        .roads-casing {
-          line-cap: round;
-          line-join: round;
-        }
-        .tunnels-casing {
-          line-dasharray: 4,2;
-        }
-        .bridges-casing {
-          [zoom >= 14] {
-            line-color: @bridge-casing;
-            line-join: round;
-          }
-        }
-      }
-    }
-  }
+ at paths-background-width:          1;
+ at paths-bridge-casing-width:       0.5;
+ at paths-tunnel-casing-width:       1;
 
+.roads-casing, .bridges-casing, .tunnels-casing {
   ::casing {
     [zoom >= 12] {
       [feature = 'highway_motorway'] {
@@ -243,6 +150,12 @@
         [zoom >= 13] { line-width: @motorway-width-z13; }
         [zoom >= 15] { line-width: @motorway-width-z15; }
         [zoom >= 17] { line-width: @motorway-width-z17; }
+        [link = 'yes'] {
+          line-width: @motorway-link-width-z12;
+          [zoom >= 13] { line-width: @motorway-link-width-z13; }
+          [zoom >= 15] { line-width: @motorway-link-width-z15; }
+          [zoom >= 17] { line-width: @motorway-link-width-z17; }
+        }
         line-color: @motorway-casing;
         .roads-casing {
           line-join: round;
@@ -288,6 +201,7 @@
         [zoom >= 17] { line-width: @primary-width-z17; }
         .roads-casing {
           line-join: round;
+          line-cap: round;
         }
         .tunnels-casing {
           line-dasharray: 4,2;
@@ -323,9 +237,10 @@
     }
 
     [feature = 'highway_tertiary'] {
-      [zoom >= 13] {
+      [zoom >= 12] {
         line-color: @tertiary-casing;
-        line-width: @tertiary-width-z13;
+        line-width: @tertiary-width-z12;
+        [zoom >= 13] { line-width: @tertiary-width-z13; }
         [zoom >= 14] { line-width: @tertiary-width-z14; }
         [zoom >= 15] { line-width: @tertiary-width-z15; }
         [zoom >= 17] { line-width: @tertiary-width-z17; }
@@ -350,7 +265,7 @@
     [feature = 'highway_road'] {
       [zoom >= 13] {
         line-color: @residential-casing;
-        line-width: @residential-casing-width-z13;
+        line-width: @residential-width-z13;
         [zoom >= 14] { line-width: @residential-width-z14; }
         [zoom >= 15] { line-width: @residential-width-z15; }
         [zoom >= 16] { line-width: @residential-width-z16; }
@@ -376,75 +291,68 @@
       [zoom >= 16][service = 'INT-minor'] {
         line-color: @service-casing;
         [service = 'INT-normal'] {
-          .roads-casing, .tunnels-casing {
-            line-width: 2.5;
-            [zoom >= 16] { line-width: 7; }
-          }
-          .bridges-casing {
-            line-width: 3;
-            [zoom >= 16] { line-width: 8; }
-          }
+          line-width: @service-width-z14;
+          [zoom >= 16] { line-width: @service-width-z16; }
+          [zoom >= 17] { line-width: @service-width-z17; }
         }
         [service = 'INT-minor'] {
-          line-width: 4;
+          line-width: @minor-service-width-z16;
+        }
+        .roads-casing {
+          line-join: round;
+          line-cap: round;
         }
-        line-join: round;
-        line-cap: round;
         .tunnels-casing { line-dasharray: 4,2; }
         .bridges-casing {
           line-color: @bridge-casing;
           line-join: round;
-          line-cap: butt;
         }
       }
     }
 
     [feature = 'highway_pedestrian'] {
       [zoom >= 13] {
-        line-join: round;
-        .roads-casing, .tunnels-casing {
-          line-width: 2;
-          line-color: @pedestrian-casing;
+        line-color: @pedestrian-casing;
+        line-width: @pedestrian-width-z13;
+        [zoom >= 14] { line-width: @pedestrian-width-z14; }
+        [zoom >= 15] { line-width: @pedestrian-width-z15; }
+        [zoom >= 16] { line-width: @pedestrian-width-z16; }
+        [zoom >= 17] { line-width: @pedestrian-width-z17; }
+        .roads-casing {
+          line-join: round;
           line-cap: round;
-          [zoom >= 14] { line-width: 3.6; }
-          [zoom >= 15] { line-width: 6.5; }
-          [zoom >= 16] { line-width: 9; }
-          .tunnels-casing {
-            line-dasharray: 4,2;
-          }
+        }
+        .tunnels-casing {
+          line-dasharray: 4,2;
         }
         .bridges-casing {
-          line-width: 2.2;
-          line-color: @bridge-casing;
-          [zoom >= 14] { line-width: 3.8; }
-          [zoom >= 15] { line-width: 7; }
-          [zoom >= 16] { line-width: 9.5; }
+          [zoom >= 14] {
+            line-color: @bridge-casing;
+            line-join: round;
+          }
         }
       }
     }
 
     [feature = 'highway_living_street'] {
       [zoom >= 13] {
-        line-width: 2.5;
         line-color: @living-street-casing;
-        [zoom >= 14] { line-width: 4; }
-        [zoom >= 15] { line-width: 6; }
-        [zoom >= 16] { line-width: 9; }
-        [zoom >= 17] { line-width: 14.5; }
+        line-width: @living-street-width-z13;
+        [zoom >= 14] { line-width: @living-street-width-z14; }
+        [zoom >= 15] { line-width: @living-street-width-z15; }
+        [zoom >= 16] { line-width: @living-street-width-z16; }
+        [zoom >= 17] { line-width: @living-street-width-z17; }
         .roads-casing {
           line-cap: round;
           line-join: round;
         }
         .tunnels-casing {
-          line-color: @living-street-tunnel-casing;
           line-dasharray: 4,2;
         }
         .bridges-casing {
           [zoom >= 14] {
             line-color: @bridge-casing;
-            [zoom >= 15] { line-width: 6.2; }
-            [zoom >= 16] { line-width: 8.9; }
-            [zoom >= 17] { line-width: 15; }
+            line-join: round;
           }
         }
       }
@@ -452,67 +360,169 @@
 
     [feature = 'highway_steps'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 6.5;
-          [zoom >= 15] { line-width: 9.5; }
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @steps-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          [zoom >= 15] { line-width: @steps-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
           line-color: @bridge-casing;
           line-join: round;
         }
       }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-width: @steps-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          [zoom >= 15] { line-width: @steps-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
+          line-color: @tunnel-casing;
+          line-dasharray: 4,2;
+        }
+      }
     }
 
     [feature = 'highway_bridleway'],
     [feature = 'highway_path'][horse = 'designated'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 5.5;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @bridleway-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
           line-color: @bridge-casing;
           line-join: round;
         }
       }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-width: @bridleway-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
+          line-color: @tunnel-casing;
+          line-dasharray: 4,2;
+        }
+      }
     }
 
     [feature = 'highway_footway'],
     [feature = 'highway_path'][foot = 'designated'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 6;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @footway-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          [zoom >= 15] { line-width: @footway-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
           line-color: @bridge-casing;
           line-join: round;
         }
       }
+      .tunnels-casing {
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @footway-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          [zoom >= 15] { line-width: @footway-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
+          line-color: @tunnel-casing;
+          line-dasharray: 4,2;
+        }
+      }
     }
 
     [feature = 'highway_cycleway'],
     [feature = 'highway_path'][bicycle = 'designated'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 5.5;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @cycleway-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
           line-color: @bridge-casing;
           line-join: round;
         }
       }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-width: @cycleway-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
+          line-color: @tunnel-casing;
+          line-dasharray: 4,2;
+        }
+      }
     }
 
     [feature = 'highway_path'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @path-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          [zoom >= 15] { line-width: @path-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width); }
           line-color: @bridge-casing;
           line-join: round;
         }
       }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-width: @path-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          [zoom >= 15] { line-width: @path-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width); }
+          line-color: @tunnel-casing;
+          line-dasharray: 4,2;
+        }
+      }
     }
 
     [feature = 'highway_track'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4.5;
+        [zoom >= 13][access != 'no'] {
           line-color: @bridge-casing;
           line-join: round;
+          line-width: @track-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          [tracktype = 'grade1'] {
+            line-width: @track-grade1-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          }
+          [tracktype = 'grade2'] {
+            line-width: @track-grade2-width-z13 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          }
+        }
+        [zoom >= 15] {
+          line-width: @track-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width);
           [tracktype = 'grade1'] {
+            line-width: @track-grade1-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          }
+          [tracktype = 'grade2'] {
+            line-width: @track-grade2-width-z15 + 2 * (@paths-background-width + @paths-bridge-casing-width);
+          }
+        }
+      }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-color: @tunnel-casing;
+          line-dasharray: 4,2;
+          line-width: @track-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          [tracktype = 'grade1'] {
+            line-width: @track-grade1-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          }
+          [tracktype = 'grade2'] {
+            line-width: @track-grade2-width-z13 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+          }
+          [zoom >= 15]{
+            line-width: @track-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+            [tracktype = 'grade1'] {
+              line-width: @track-grade1-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+            }
+            [tracktype = 'grade2'] {
+              line-width: @track-grade2-width-z15 + 2 * (@paths-background-width + @paths-tunnel-casing-width);
+            }
+          }
+        }
+      }
+    }
+
+    [feature = 'railway_tram'] {
+      .bridges-casing {
+        [zoom >= 13] {
+          line-width: 4;
+          [zoom >= 15] {
             line-width: 5;
           }
+          line-color: black;
+          line-join: round;
         }
       }
     }
@@ -528,11 +538,12 @@
     }
 
     [feature = 'railway_light_rail'],
+    [feature = 'railway_funicular'],
     [feature = 'railway_narrow_gauge'] {
       .bridges-casing {
         [zoom >= 14] {
           line-width: 5.5;
-          line-color: #555;
+          line-color: black;
           line-join: round;
         }
       }
@@ -561,9 +572,7 @@
     }
 
     [feature = 'railway_disused'],
-    [feature = 'railway_abandoned'],
     [feature = 'railway_construction'],
-    [feature = 'railway_funicular'][zoom >= 14],
     [feature = 'railway_miniature'][zoom >= 15],
     [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
       .bridges-casing {
@@ -578,7 +587,9 @@
     [feature = 'aeroway_runway'] {
       .bridges-casing {
         [zoom >= 14] {
-          line-width: 19;
+          line-width: 13;
+          [zoom >= 15] { line-width: 19; }
+          [zoom >= 16] { line-width: 25; }
           line-color: black;
           line-join: round;
         }
@@ -593,19 +604,30 @@
           line-join: round;
           [zoom >= 15] { line-width: 7; }
         }
-      } 
+      }
     }
   }
 
-  ::bridges_background {
+  ::bridges_and_tunnels_background {
     [feature = 'highway_bridleway'],
     [feature = 'highway_path'][horse = 'designated'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @bridleway-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * @paths-background-width; }
           line-color: @bridleway-casing;
           line-join: round;
+        }
+      }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-color: @bridleway-casing;
           line-cap: round;
+          line-join: round;
+          line-width: @bridleway-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @bridleway-width-z15 + 2 * @paths-background-width; }
         }
       }
     }
@@ -613,11 +635,22 @@
     [feature = 'highway_footway'],
     [feature = 'highway_path'][foot = 'designated'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4.5;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @footway-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @footway-width-z15 + 2 * @paths-background-width; }
           line-color: @footway-casing;
           line-join: round;
+        }
+      }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-color: @footway-casing;
           line-cap: round;
+          line-join: round;
+          line-width: @footway-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @footway-width-z15 + 2 * @paths-background-width; }
         }
       }
     }
@@ -625,51 +658,124 @@
     [feature = 'highway_cycleway'],
     [feature = 'highway_path'][bicycle = 'designated'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @cycleway-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * @paths-background-width; }
           line-color: @cycleway-casing;
           line-join: round;
+        }
+      }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-color: @cycleway-casing;
           line-cap: round;
+          line-join: round;
+          line-width: @cycleway-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @cycleway-width-z15 + 2 * @paths-background-width; }
         }
       }
     }
 
     [feature = 'highway_steps'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 5;
-          [zoom >= 15] { line-width: 8; }
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @steps-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @steps-width-z15 + 2 * @paths-background-width; }
           line-color: @steps-casing;
           line-join: round;
         }
       }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-color: @steps-casing;
+          line-cap: round;
+          line-join: round;
+          line-width: @steps-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @steps-width-z15 + 2 * @paths-background-width; }
+        }
+      }
     }
 
     [feature = 'highway_path'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 2.5;
+        [zoom >= 14][access != 'no'],
+        [zoom >= 15] {
+          line-width: @path-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @path-width-z15 + 2 * @paths-background-width; }
           line-color: @path-casing;
           line-join: round;
+        }
+      }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
+          line-color: @path-casing;
           line-cap: round;
+          line-join: round;
+          line-width: @path-width-z13 + 2 * @paths-background-width;
+          [zoom >= 15] { line-width: @path-width-z15 + 2 * @paths-background-width; }
         }
       }
     }
 
     [feature = 'highway_track'] {
+      /* We don't set opacity here, so it's 1.0. Aside from that, it's basically a copy of roads-fill::background in the track part of ::fill */
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 3;
+        [zoom >= 13][access != 'no'] {
+          line-color: @track-casing;
+          line-join: round;
+          line-width: @track-width-z13 + 2 * @paths-background-width;
+          [tracktype = 'grade1'] {
+            line-width: @track-grade1-width-z13 + 2 * @paths-background-width;
+          }
+          [tracktype = 'grade2'] {
+            line-width: @track-grade2-width-z13 + 2 * @paths-background-width;
+          }
+        }
+        [zoom >= 15] {
+          line-width: @track-width-z15 + 2 * @paths-background-width;
+          [tracktype = 'grade1'] {
+            line-width: @track-grade1-width-z15 + 2 * @paths-background-width;
+          }
+          [tracktype = 'grade2'] {
+            line-width: @track-grade2-width-z15 + 2 * @paths-background-width;
+          }
+        }
+      }
+      .tunnels-casing {
+        [zoom >= 13][access != 'no'],
+        [zoom >= 15] {
           line-color: @track-casing;
           line-join: round;
           line-cap: round;
-          [tracktype = 'grade1'] { line-width: 3.5; }
+          line-width: @track-width-z13 + 2 * @paths-background-width;
+          /* With the heavier dasharrays on grade1 and grade2 it helps to make the casing a bit larger */
+          [tracktype = 'grade1'] {
+            line-width: @track-grade1-width-z13 + 2 * @paths-background-width;
+          }
+          [tracktype = 'grade2'] {
+            line-width: @track-grade2-width-z13 + 2 * @paths-background-width;
+          }
+
+          [zoom >= 15] {
+            line-width: @track-width-z15 + 2 * @paths-background-width;
+            [tracktype = 'grade1'] {
+              line-width: @track-grade1-width-z15 + 2 * @paths-background-width;
+            }
+            [tracktype = 'grade2'] {
+              line-width: @track-grade2-width-z15 + 2 * @paths-background-width;
+            }
+          }
         }
       }
     }
 
     [feature = 'railway_rail'][zoom >= 13],
-    [feature = 'railway_preserved'][zoom >= 14],
+    [feature = 'railway_preserved'][zoom >= 13],
     [feature = 'railway_monorail'][zoom >= 14] {
       .bridges-casing {
         line-width: 5;
@@ -684,15 +790,12 @@
           line-width: 4;
           line-color: white;
           line-join: round;
-          line-cap: round;
         }
       }
     }
 
     [feature = 'railway_disused'],
-    [feature = 'railway_abandoned'],
     [feature = 'railway_construction'],
-    [feature = 'railway_funicular'][zoom >= 14],
     [feature = 'railway_miniature'][zoom >= 15],
     [feature = 'railway_INT-preserved-ssy'][zoom >= 14] {
       .bridges-casing {
@@ -700,151 +803,93 @@
           line-width: 4.5;
           line-color: white;
           line-join: round;
-          line-cap: round;
         }
       }
     }
 
-    [feature = 'railway_subway'] {
-      .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4;
-          line-color: white;
-        }
-      }
-    }
-
-    [feature = 'railway_light_rail'],
-    [feature = 'railway_narrow_gauge'] {
+    [feature = 'railway_tram'] {
       .bridges-casing {
-        [zoom >= 14] {
-          line-width: 4;
-          line-color: white;
-        }
-      }
-    }
-  }
-}
-
-.roads-fill,.bridges-fill,.tunnels-fill {
-  ::fill_links {
-    [feature = 'highway_motorway_link'] {
-      [zoom >= 12] {
-        line-width: @motorway-link-width-z12 - 2 * @casing-width-z12;
-        [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; }
-        [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; }
-        [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @motorway-fill;
-        }
-        .tunnels-fill {
-          line-color: @motorway-tunnel-fill;
-        }
-        .bridges-fill {
-          line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12;
-          [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; }
-          [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; }
-          [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; }
-        }
-        line-cap: round;
-        line-join: round;
-      }
-    }
-
-    [feature = 'highway_trunk_link'] {
-      [zoom >= 12] {
-        line-width: @trunk-width-z12 - 2 * @casing-width-z12;
-        [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; }
-        [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; }
-        [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @trunk-fill;
-        }
-        .tunnels-fill {
-          line-color: @trunk-tunnel-fill;
-        }
-        .bridges-fill {
-          line-width: @trunk-width-z12 - 2 * @bridge-casing-width-z12;
-          [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @bridge-casing-width-z13; }
-          [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @bridge-casing-width-z15; }
-          [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @bridge-casing-width-z17; }
+        [zoom >= 13] {
+          line-width: 3;
+          [zoom >= 15] {
+            line-width: 4;
+          }
+          line-color: white;
         }
-        line-cap: round;
-        line-join: round;
       }
     }
 
-    [feature = 'highway_primary_link'] {
-      [zoom >= 12] {
-        line-width: @primary-width-z12 - 2 * @casing-width-z12;
-        [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; }
-        [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; }
-        [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @primary-fill;
-        }
-        .tunnels-fill {
-          line-color: @primary-tunnel-fill;
-        }
-        .bridges-fill {
-          line-width: @primary-width-z12 - 2 * @bridge-casing-width-z12;
-          [zoom >= 13] { line-width: @primary-width-z13 - 2 * @bridge-casing-width-z13; }
-          [zoom >= 15] { line-width: @primary-width-z15 - 2 * @bridge-casing-width-z15; }
-          [zoom >= 17] { line-width: @primary-width-z17 - 2 * @bridge-casing-width-z17; }
+    [feature = 'railway_subway'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: white;
+          line-join: round;
         }
-        line-cap: round;
-        line-join: round;
       }
     }
 
-    [feature = 'highway_secondary_link'] {
-      [zoom >= 12] {
-        line-width: @secondary-width-z12 - 2 * @casing-width-z12;
-        [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; }
-        [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; }
-        [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @secondary-fill;
-        }
-        .tunnels-fill {
-          line-color: @secondary-tunnel-fill;
-        }
-        .bridges-fill {
-          line-width: @secondary-width-z12 - 2 * @bridge-casing-width-z12;
-          [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @bridge-casing-width-z13; }
-          [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @bridge-casing-width-z15; }
-          [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @bridge-casing-width-z17; }
+    [feature = 'railway_light_rail'],
+    [feature = 'railway_funicular'],
+    [feature = 'railway_narrow_gauge'] {
+      .bridges-casing {
+        [zoom >= 14] {
+          line-width: 4;
+          line-color: white;
+          line-join: round;
         }
-        line-cap: round;
-        line-join: round;
       }
     }
+  }
+}
 
-    [feature = 'highway_tertiary_link'] {
+/* Data on z<10 comes from osm_planet_roads, data on z>=10 comes from
+osm_planet_line. This is for performance reasons: osm_planet_roads contains less
+data, and is thus faster. Chosen is for zoom level 10 as cut-off, because
+residential is rendered from z10 and is not included in osm_planet_roads. */
+
+#roads-low-zoom[zoom < 10],
+.roads-fill[zoom >= 10],
+.bridges-fill[zoom >= 10],
+.tunnels-fill[zoom >= 10] {
+  ::fill {
+    [feature = 'highway_proposed'] {
       [zoom >= 13] {
-        line-width: @tertiary-width-z13 - 2 * @casing-width-z13;
-        [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; }
-        [zoom >= 15] { line-width: @tertiary-link-width-z15 - 2 * @tertiary-link-casing-width-z15; }
-        [zoom >= 17] { line-width: @tertiary-link-width-z17 - 2 * @tertiary-link-casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @tertiary-fill;
-        }
-        .tunnels-fill {
-          line-color: @tertiary-tunnel-fill;
+        line-width: 2;
+        line-color: white;
+        line-opacity: 0.3;
+        centre/line-width: 2;
+        centre/line-color: #9cc;
+        centre/line-opacity: 0.3;
+        centre/line-dasharray: 2,4;
+        right/line-offset: 2 / 2;
+        right/line-width: 0.1;
+        right/line-color: #9cc;
+        right/line-opacity: 0.3;
+        left/line-offset: -2 / 2;
+        left/line-width: 0.1;
+        left/line-color: #9cc;
+        left/line-opacity: 0.3;
+        [zoom >= 14] {
+          line-width: 3.5;
+          centre/line-width: 3.5;
+          centre/line-dasharray: 4,6;
+          right/line-offset: 3.5 / 2;
+          right/line-width: 0.25;
+          left/line-offset: -3.5 / 2;
+          left/line-width: 0.25;
         }
-        .bridges-fill {
-          line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13;
-          [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; }
-          [zoom >= 15] { line-width: @tertiary-link-width-z15 - 2 * @bridge-casing-width-z15; }
-          [zoom >= 17] { line-width: @tertiary-link-width-z17 - 2 * @bridge-casing-width-z17; }
+        [zoom >= 16] {
+          line-width: 7;
+          centre/line-width: 7;
+          centre/line-dasharray: 6,8;
+          right/line-offset: 7 / 2;
+          right/line-width: 0.5;
+          left/line-offset: -7 / 2;
+          left/line-width: 0.5;
         }
-        line-cap: round;
-        line-join: round;
       }
     }
-  }
-
-  ::fill {
 
     /*
      * The construction rules for small roads are strange, since if construction is null its assumed that
@@ -857,7 +902,6 @@
      * https://github.com/mapbox/carto/issues/235
      * https://github.com/mapbox/carto/issues/237
      */
-    [feature = 'highway_proposed'],
     [feature = 'highway_construction'] {
       [zoom >= 12] {
         line-width: 2;
@@ -882,10 +926,6 @@
         [construction = 'tertiary'],
         [construction = 'tertiary_link'] {
           line-color: @tertiary-fill;
-          [zoom < 13] {
-            line-width: 0;
-            b/line-width: 0;
-          }
         }
         [construction = 'residential'],
         [construction = 'unclassified'],
@@ -894,6 +934,11 @@
           [zoom < 13] {
             line-width: 0;
             b/line-width: 0;
+          }            
+          [zoom >= 13][zoom < 14] {
+            line-width: 3;
+            b/line-width: 2;
+            b/line-dasharray: 5,3;
           }
         }
         [construction = 'service'] {
@@ -916,7 +961,11 @@
           b/line-width: 7;
           b/line-dasharray: 8,6;
         }
-        [construction = 'cycleway'] {
+        [construction = 'footway'],
+        [construction = 'cycleway'],
+        [construction = 'bridleway'],
+        [construction = 'path'],
+        [construction = 'track'] {
           [zoom < 14] {
             line-width: 0;
             b/line-width: 0;
@@ -932,13 +981,24 @@
     }
 
     [feature = 'highway_motorway'] {
+      [zoom >= 5] {
+        line-color: @motorway-fill;
+        line-width: 0.5;
+      }
+      [zoom >= 7] { line-width: 1; }
+      [zoom >= 9] { line-width: 1.4; }
+      [zoom >= 10] { line-width: 2; }
+      [zoom >= 11] { line-width: 2.5; }
       [zoom >= 12] {
         line-width: @motorway-width-z12 - 2 * @casing-width-z12;
         [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @casing-width-z13; }
         [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @casing-width-z15; }
         [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @motorway-fill;
+        [link = 'yes'] {
+          line-width: @motorway-link-width-z12 - 2 * @casing-width-z12;
+          [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @casing-width-z13; }
+          [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @casing-width-z15; }
+          [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @casing-width-z17; }
         }
         .tunnels-fill {
           line-color: @motorway-tunnel-fill;
@@ -948,6 +1008,12 @@
           [zoom >= 13] { line-width: @motorway-width-z13 - 2 * @bridge-casing-width-z13; }
           [zoom >= 15] { line-width: @motorway-width-z15 - 2 * @bridge-casing-width-z15; }
           [zoom >= 17] { line-width: @motorway-width-z17 - 2 * @bridge-casing-width-z17; }
+          [link = 'yes'] {
+            line-width: @motorway-link-width-z12 - 2 * @bridge-casing-width-z12;
+            [zoom >= 13] { line-width: @motorway-link-width-z13 - 2 * @bridge-casing-width-z13; }
+            [zoom >= 15] { line-width: @motorway-link-width-z15 - 2 * @bridge-casing-width-z15; }
+            [zoom >= 17] { line-width: @motorway-link-width-z17 - 2 * @bridge-casing-width-z17; }
+          }
         }
         line-cap: round;
         line-join: round;
@@ -955,14 +1021,22 @@
     }
 
     [feature = 'highway_trunk'] {
+      [zoom >= 5] {
+        line-width: 0.4;
+        line-color: @trunk-fill;
+      }
+      [zoom >= 7] {
+        line-width: 1;
+        line-color: @trunk-fill-alternative;
+      }
+      [zoom >= 9] { line-width: 2; }
+      [zoom >= 11] { line-width: 2.5; }
       [zoom >= 12] {
+        line-color: @trunk-fill;
         line-width: @trunk-width-z12 - 2 * @casing-width-z12;
         [zoom >= 13] { line-width: @trunk-width-z13 - 2 * @casing-width-z13; }
         [zoom >= 15] { line-width: @trunk-width-z15 - 2 * @casing-width-z15; }
         [zoom >= 17] { line-width: @trunk-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @trunk-fill;
-        }
         .tunnels-fill {
           line-color: @trunk-tunnel-fill;
         }
@@ -978,14 +1052,18 @@
     }
 
     [feature = 'highway_primary'] {
+      [zoom >= 7] {
+        line-width: 0.5;
+        line-color: @primary-fill;
+      }
+      [zoom >= 9] { line-width: 1.2; }
+      [zoom >= 10] { line-width: 2; }
+      [zoom >= 11] { line-width: 2.5; }
       [zoom >= 12] {
         line-width: @primary-width-z12 - 2 * @casing-width-z12;
         [zoom >= 13] { line-width: @primary-width-z13 - 2 * @casing-width-z13; }
         [zoom >= 15] { line-width: @primary-width-z15 - 2 * @casing-width-z15; }
         [zoom >= 17] { line-width: @primary-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @primary-fill;
-        }
         .tunnels-fill {
           line-color: @primary-tunnel-fill;
         }
@@ -1001,14 +1079,16 @@
     }
 
     [feature = 'highway_secondary'] {
+      [zoom >= 9] {
+        line-width: 1;
+        line-color: @secondary-fill;
+      }
+      [zoom >= 11] { line-width: 2; }
       [zoom >= 12] {
         line-width: @secondary-width-z12 - 2 * @casing-width-z12;
         [zoom >= 13] { line-width: @secondary-width-z13 - 2 * @casing-width-z13; }
         [zoom >= 15] { line-width: @secondary-width-z15 - 2 * @casing-width-z15; }
         [zoom >= 17] { line-width: @secondary-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @secondary-fill;
-        }
         .tunnels-fill {
           line-color: @secondary-tunnel-fill;
         }
@@ -1024,19 +1104,23 @@
     }
 
     [feature = 'highway_tertiary'] {
-      [zoom >= 13] {
-        line-width: @tertiary-width-z13 - 2 * @casing-width-z13;
+      [zoom >= 10] {
+        line-color: @residential-casing;
+        line-width: 1;
+      }
+      [zoom >= 12] {
+        line-color: @tertiary-fill;
+        line-width: @tertiary-width-z12 - 2 * @casing-width-z12;
+        [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @casing-width-z13; }
         [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @casing-width-z14; }
         [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @casing-width-z15; }
         [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @casing-width-z17; }
-        .roads-fill, .bridges-fill {
-          line-color: @tertiary-fill;
-        }
         .tunnels-fill {
           line-color: @tertiary-tunnel-fill;
         }
         .bridges-fill {
-          line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13;
+          line-width: @tertiary-width-z12 - 2 * @bridge-casing-width-z12;
+          [zoom >= 13] { line-width: @tertiary-width-z13 - 2 * @bridge-casing-width-z13; }
           [zoom >= 14] { line-width: @tertiary-width-z14 - 2 * @bridge-casing-width-z14; }
           [zoom >= 15] { line-width: @tertiary-width-z15 - 2 * @bridge-casing-width-z15; }
           [zoom >= 17] { line-width: @tertiary-width-z17 - 2 * @bridge-casing-width-z17; }
@@ -1048,8 +1132,12 @@
 
     [feature = 'highway_residential'],
     [feature = 'highway_unclassified'] {
+      [zoom >= 10] {
+        line-color: @residential-casing;
+        line-width: 1;
+      }
       [zoom >= 13] {
-        line-width: @residential-width-z13 - 2 * @casing-width-z13;
+        line-width: @residential-width-z13 - 2 * @residential-casing-width-z13;
         [zoom >= 14] { line-width: @residential-width-z14 - 2 * @casing-width-z14; }
         [zoom >= 15] { line-width: @residential-width-z15 - 2 * @casing-width-z15; }
         [zoom >= 16] { line-width: @residential-width-z16 - 2 * @casing-width-z16; }
@@ -1072,16 +1160,11 @@
       }
     }
 
-    [feature = 'highway_tertiary'][zoom >= 10][zoom < 13],
-    [feature = 'highway_residential'][zoom >= 10][zoom < 13],
-    [feature = 'highway_unclassified'][zoom >= 10][zoom < 13],
-    [feature = 'highway_road'][zoom >= 10][zoom < 13],
-    [feature = 'highway_living_street'][zoom >= 12][zoom < 13] {
-      line-width: 1;
-      line-color: @residential-casing;
-    }
-
     [feature = 'highway_road'] {
+      [zoom >= 10] {
+        line-color: @residential-casing;
+        line-width: 1;
+      }
       [zoom >= 13] {
         .roads-fill, .bridges-fill {
           line-color: @road-fill;
@@ -1114,18 +1197,31 @@
     }
 
     [feature = 'highway_living_street'] {
+      [zoom >= 12] {
+        line-color: @residential-casing;
+        line-width: 1;
+      }
       [zoom >= 13] {
-        line-width: 1.5;
-        line-color: @living-street-fill;
+        line-width: @living-street-width-z13 - 2 * @casing-width-z13;
+        [zoom >= 14] { line-width: @living-street-width-z14 - 2 * @casing-width-z14; }
+        [zoom >= 15] { line-width: @living-street-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 16] { line-width: @living-street-width-z16 - 2 * @casing-width-z16; }
+        [zoom >= 17] { line-width: @living-street-width-z17 - 2 * @casing-width-z17; }
+        .roads-fill, .bridges-fill {
+          line-color: @living-street-fill;
+        }
+        .tunnels-fill {
+          line-color: @living-street-tunnel-fill;
+        }
+        .bridges-fill {
+          line-width: @living-street-width-z13 - 2 * @casing-width-z13;
+          [zoom >= 14] { line-width: @living-street-width-z14 - 2 * @bridge-casing-width-z14; }
+          [zoom >= 15] { line-width: @living-street-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 16] { line-width: @living-street-width-z16 - 2 * @bridge-casing-width-z16; }
+          [zoom >= 17] { line-width: @living-street-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
         line-join: round;
         line-cap: round;
-        [zoom >= 14] { line-width: 3; }
-        [zoom >= 15] { line-width: 4.7; }
-        [zoom >= 16] { line-width: 7.4; }
-        [zoom >= 17] { line-width: 13; }
-      }
-      .tunnels-fill {
-        line-color: @living-street-tunnel-fill;
       }
     }
 
@@ -1138,27 +1234,60 @@
       [zoom >= 16][service = 'INT-minor'] {
         line-color: @service-fill;
         [service = 'INT-normal'] {
-          line-width: 2;
-          [zoom >= 16] { line-width: 6; }
+          line-width: @service-width-z14 - 2 * @casing-width-z14;
+          [zoom >= 16] { line-width: @service-width-z16 - 2 * @casing-width-z16; }
+          [zoom >= 17] { line-width: @service-width-z17 - 2 * @casing-width-z17; }
         }
         [service = 'INT-minor'] {
-          line-width: 3;
+          line-width: @minor-service-width-z16 - 2 * @casing-width-z16;
         }
         line-join: round;
         line-cap: round;
+        .tunnels-fill {
+          line-color: darken(white, 5%);
+        }
+        .bridges-fill {
+          [service = 'INT-normal'] {
+            line-width: @service-width-z14 - 2 * @bridge-casing-width-z14;
+            [zoom >= 16] { line-width: @service-width-z16 - 2 * @bridge-casing-width-z16; }
+            [zoom >= 17] { line-width: @service-width-z17 - 2 * @bridge-casing-width-z17; }
+          }
+          [service = 'INT-minor'] {
+            line-width: @minor-service-width-z16 - 2 * @bridge-casing-width-z16;
+          }
+        }
       }
     }
 
     [feature = 'highway_pedestrian'] {
       [zoom >= 13] {
+        line-width: @living-street-width-z13 - 2 * @casing-width-z13;
+        [zoom >= 14] { line-width: @pedestrian-width-z14 - 2 * @casing-width-z14; }
+        [zoom >= 15] { line-width: @pedestrian-width-z15 - 2 * @casing-width-z15; }
+        [zoom >= 16] { line-width: @pedestrian-width-z16 - 2 * @casing-width-z16; }
+        [zoom >= 17] { line-width: @pedestrian-width-z17 - 2 * @casing-width-z17; }
         line-color: @pedestrian-fill;
-        line-width: 1.5;
-        [zoom >= 14] { line-width: 3; }
-        [zoom >= 15] { line-width: 5.5; }
-        [zoom >= 16] { line-width: 8; }
+        .bridges-fill {
+          line-width: @pedestrian-width-z13 - 2 * @casing-width-z13;
+          [zoom >= 14] { line-width: @pedestrian-width-z14 - 2 * @bridge-casing-width-z14; }
+          [zoom >= 15] { line-width: @pedestrian-width-z15 - 2 * @bridge-casing-width-z15; }
+          [zoom >= 16] { line-width: @pedestrian-width-z16 - 2 * @bridge-casing-width-z16; }
+          [zoom >= 17] { line-width: @pedestrian-width-z17 - 2 * @bridge-casing-width-z17; }
+        }
+        line-join: round;
+        line-cap: round;
+      }
+    }
+
+    [feature = 'highway_raceway'] {
+      [zoom >= 12] {
+        line-color: @raceway-fill;
+        line-width: 1.2;
         line-join: round;
         line-cap: round;
       }
+      [zoom >= 13] { line-width: 4; }
+      [zoom >= 15] { line-width: 7; }
     }
 
     [feature = 'highway_platform'] {
@@ -1175,55 +1304,38 @@
     }
 
     [feature = 'highway_steps'] {
-      [zoom >= 13][zoom < 15] {
-        .roads-fill, .tunnels-fill {
-          line-width: 6;
-          line-color: @steps-casing;
-          line-opacity: 0.4;
-        }
-        b/line-width: 2;
-        b/line-color: @steps-fill;
-        b/line-dasharray: 1,3;
-        b/line-cap: round;
-        b/line-join: round;
-      }
-    }
-
-    [feature = 'highway_steps'] {
+      [zoom >= 13][access != 'no'],
       [zoom >= 15] {
-        line-width: 5.0;
-        line-color: @steps-fill;
-        line-dasharray: 2,1;
+        .roads-fill[zoom >= 15] {
+          background/line-color: @steps-casing;
+          background/line-cap: round;
+          background/line-join: round;
+          background/line-width: @steps-width-z15 + 2 * @paths-background-width;
+          background/line-opacity: 0.4;
+        }
+        line/line-color: @steps-fill;
+        line/line-dasharray: 2,1;
+        line/line-width: @steps-width-z13;
+        [zoom >= 15] { line/line-width:  @steps-width-z15; }
       }
     }
 
     [feature = 'highway_bridleway'],
     [feature = 'highway_path'][horse = 'designated'] {
-      [zoom >= 13] {
-        .tunnels-fill {
-          tunnelcasing/line-width: 5;
-          tunnelcasing/line-color: @tunnel-casing;
-          tunnelcasing/line-dasharray: 4,2;
-        }
-        .roads-fill, .tunnels-fill {
-          background/line-width: 3;
+      [zoom >= 13][access != 'no'],
+      [zoom >= 15] {
+        .roads-fill[zoom >= 15] {
           background/line-color: @bridleway-casing;
           background/line-cap: round;
           background/line-join: round;
-          .roads-fill { background/line-opacity: 0.4; }
+          background/line-width: @bridleway-width-z15 + 2 * @paths-background-width;
+          background/line-opacity: 0.4;
         }
         line/line-color: @bridleway-fill;
         line/line-dasharray: 4,2;
-        .roads-fill {
-          line/line-width: 1.2;
-        }
-        .bridges-fill {
-          [zoom >= 13] { line/line-width: 1.2; }
-          [zoom >= 14] { line/line-width: 1.5; }
-        }
+        line/line-width: @bridleway-width-z13;
+        [zoom >= 15] { line/line-width: @bridleway-width-z15; }
         .tunnels-fill {
-          line/line-width: 2;
-          line/line-opacity: 0.5;
           line/line-join: round;
           line/line-cap: round;
         }
@@ -1232,68 +1344,41 @@
 
     [feature = 'highway_footway'],
     [feature = 'highway_path'][foot = 'designated'] {
-      [zoom >= 13] {
-        .tunnels-fill {
-          tunnelcasing/line-width: 5.5;
-          tunnelcasing/line-color: @tunnel-casing;
-          tunnelcasing/line-dasharray: 4,2;
-        }
-        .roads-fill, .tunnels-fill {
+      [zoom >= 13][access != 'no'],
+      [zoom >= 15] {
+        .roads-fill[zoom >= 15] {
           background/line-color: @footway-casing;
           background/line-cap: round;
           background/line-join: round;
-          .roads-fill { background/line-width: 4; }
-          .tunnels-fill { background/line-width: 3.5; }
-          .roads-fill { background/line-opacity: 0.4; }
+          background/line-width: @footway-width-z15 + 2 * @paths-background-width;
+          background/line-opacity: 0.4;
         }
         line/line-color: @footway-fill;
         line/line-dasharray: 1,3;
         line/line-join: round;
         line/line-cap: round;
-        .roads-fill {
-          line/line-width: 1.5;
-        }
-        .bridges-fill {
-          [zoom >= 13] { line/line-width: 1.5; }
-          [zoom >= 14] { line/line-width: 2; }
-        }
-        .tunnels-fill {
-          line/line-width: 2.5;
-          line/line-opacity: 0.5;
-        }
+        line/line-width: @footway-width-z13;
+        [zoom >= 15] { line/line-width:  @footway-width-z15; }
       }
     }
 
     [feature = 'highway_cycleway'],
     [feature = 'highway_path'][bicycle = 'designated'] {
-      [zoom >= 13] {
-        .tunnels-fill {
-          tunnelcasing/line-width: 5.5;
-          tunnelcasing/line-color: @tunnel-casing;
-          tunnelcasing/line-dasharray: 4,2;
-        }
-        .roads-fill, .tunnels-fill {
+      [zoom >= 13][access != 'no'],
+      [zoom >= 15] {
+        .roads-fill[zoom >= 15] {
           background/line-color: @cycleway-casing;
           background/line-cap: round;
           background/line-join: round;
-          background/line-width: 3;
-          .roads-fill { background/line-opacity: 0.4; }
+          background/line-width: @cycleway-width-z15 + 2 * @paths-background-width;
+          background/line-opacity: 0.4;
         }
         line/line-color: @cycleway-fill;
         line/line-dasharray: 1,3;
         line/line-join: round;
         line/line-cap: round;
-        .roads-fill {
-          line/line-width: 1.2;
-        }
-        .bridges-fill {
-          [zoom >= 13] { line/line-width: 1.2; }
-          [zoom >= 14] { line/line-width: 1.5; }
-        }
-        .tunnels-fill {
-          line/line-width: 2;
-          line/line-opacity: 0.5;
-        }
+        line/line-width: @cycleway-width-z13;
+        [zoom >= 15] { line/line-width: @cycleway-width-z15; }
       }
     }
 
@@ -1302,83 +1387,107 @@
     * given the specitivity precedence.
     */
     [feature = 'highway_path'] {
-      [zoom >= 13] {
-        .tunnels-fill {
-          tunnelcasing/line-width: 5.5;
-          tunnelcasing/line-color: @tunnel-casing;
-          tunnelcasing/line-dasharray: 4,2;
-        }
-        .roads-fill, .tunnels-fill {
+      [zoom >= 13][access != 'no'],
+      [zoom >= 15] {
+        .roads-fill[zoom >= 15] {
           background/line-color: @path-casing;
           background/line-cap: round;
           background/line-join: round;
-          background/line-width: 3;
-          .roads-fill { background/line-opacity: 0.4; }
+          background/line-width: @path-width-z15 + 2 * @paths-background-width;
+          background/line-opacity: 0.4;
         }
-        line/line-width: 0.5;
         line/line-color: @path-fill;
         line/line-dasharray: 6,3;
         line/line-join: round;
         line/line-cap: round;
-        .tunnels-fill {
-          line/line-width: 2;
-          line/line-opacity: 0.5;
-        }
+        line/line-width: @path-width-z13;
+        [zoom >= 15] { line/line-width: @path-width-z15; }
       }
     }
 
     [feature = 'highway_track'] {
-      [zoom >= 13] {
-        .tunnels-fill[zoom >= 14] {
-          tunnelcasing/line-width: 4.5;
-          tunnelcasing/line-color: @tunnel-casing;
-          tunnelcasing/line-dasharray: 4,2;
-        }
-
-        .roads-fill, .tunnels-fill {
-          [zoom >= 13]                   { background/line-width: 2.5; }
-          [zoom >= 14]                   { background/line-width: 3; }
-          .roads-fill                    { background/line-opacity: 0.4; }
+      [zoom >= 13][access != 'no'],
+      [zoom >= 15] {
+        /* The white casing that you mainly see against forests and other dark features */
+        .roads-fill[zoom >= 15] {
+          background/line-opacity: 0.4;
           background/line-color: @track-casing;
           background/line-join: round;
           background/line-cap: round;
+          background/line-width: @track-width-z15 + 2 * @paths-background-width;
+          /* With the heavier dasharrays on grade1 and grade2 it helps to make the casing a bit larger */
+          [tracktype = 'grade1'] {
+            background/line-width: @track-grade1-width-z15 + 2 * @paths-background-width;
+          }
+          [tracktype = 'grade2'] {
+            background/line-width: @track-grade2-width-z15 + 2 * @paths-background-width;
+          }
         }
 
+        /* Set the properties of the brown inside */
         line/line-color: @track-fill;
-        line/line-dasharray: 3,4;
+        line/line-dasharray: 5,4,2,4;
         line/line-cap: round;
         line/line-join: round;
-        [zoom >= 13] { line/line-width: 1.2; }
-        [zoom >= 14] { line/line-width: 1.5; }
-        .roads-fill, .bridges-fill   { line/line-opacity: 0.8; }
-        .tunnels-fill[zoom >= 14]    { line/line-opacity: 0.5; }
+        line/line-opacity: 0.8;
+        line/line-clip:false;
 
-        [zoom >= 14] {
+        line/line-width: @track-width-z13;
+
+        [tracktype = 'grade1'] {
+          line/line-dasharray: 100,0;
+        }
+        [tracktype = 'grade2'] {
+          line/line-dasharray: 8.8,3.2;
+        }
+        [tracktype = 'grade3'] {
+          line/line-dasharray: 5.6,4.0;
+        }
+        [tracktype = 'grade4'] {
+          line/line-dasharray: 3.2,4.8;
+        }
+        [tracktype = 'grade5'] {
+          line/line-dasharray: 1.6,6.4;
+        }
+
+        [zoom >= 15] {
+          line/line-width: @track-width-z15;
           [tracktype = 'grade1'] {
-            .roads-fill, .tunnels-fill   { background/line-width: 3.5; }
-            line/line-width: 2;
-            line/line-color: @track-grade1-fill;
-            line/line-dasharray: 100,0; /* i.e. none, see https://github.com/mapbox/carto/issues/214 */
-            .roads-fill, .bridges-fill   { line/line-opacity: 0.7; }
+            line/line-dasharray: 100,0;
           }
           [tracktype = 'grade2'] {
-            line/line-color: @track-grade2-fill;
-            line/line-dasharray: 9,4;
+            line/line-dasharray: 11,4;
+          }
+          [tracktype = 'grade3'] {
+            line/line-dasharray: 7,5;
           }
           [tracktype = 'grade4'] {
-            line/line-width: 2;
-            line/line-dasharray: 4,7,1,5;
+            line/line-dasharray: 4,6;
           }
           [tracktype = 'grade5'] {
-            line/line-width: 2;
-            line/line-dasharray: 1,5;
+            line/line-dasharray: 2,8;
           }
         }
       }
     }
 
-    [feature = 'railway_rail'],
-    [feature = 'railway_INT-spur-siding-yard'] {
+    [feature = 'railway_rail'][zoom >= 6],
+    [feature = 'railway_INT-spur-siding-yard'][zoom >= 11] {
+      [zoom < 13] {
+        line-color: #aaa;
+        [feature = 'railway_rail'] {
+          line-width: 0.6;
+          [zoom >= 9] { line-width: 1; }
+          [zoom >= 10] { line-width: 2; }
+        }
+        [feature = 'railway_INT-spur-siding-yard'] {
+          line-width: 1;
+        }
+        line-join: round;
+        .roads_low_zoom[int_tunnel = 'yes'], .tunnels-fill {
+          line-dasharray: 5,2;
+        }
+      }
       [zoom >= 13] {
         .roads-fill, .bridges-fill {
           dark/line-color: #999999;
@@ -1436,34 +1545,17 @@
       }
     }
 
+    [feature = 'railway_light_rail'],
+    [feature = 'railway_funicular'],
     [feature = 'railway_narrow_gauge'] {
-      [zoom >= 13] {
-        line/line-width: 2;
-        line/line-color: #666;
-        .tunnels-fill {
-          tunnelcasing/line-width: 5;
-          tunnelcasing/line-dasharray: 5,3;
-          tunnelcasing/line-color: #666;
-          background/line-color: #fff;
-          background/line-width: 4;
-          line/line-color: #aaa;
-          line/line-width: 1.5;
-        }
-      }
-    }
-
-    [feature = 'railway_funicular'] {
-      [zoom >= 13] {
-        line/line-width: 2;
-        line/line-color: #666;
+      [zoom >= 8] {
+        line-color: #ccc;
+        [zoom >= 10] { line-color: #aaa; }
+        [zoom >= 13] { line-color: #666; }
+        line-width: 1;
+        [zoom >= 13] { line-width: 2; }
         .tunnels-fill {
-          tunnelcasing/line-width: 5;
-          tunnelcasing/line-dasharray: 5,3;
-          tunnelcasing/line-color: #666;
-          background/line-color: #fff;
-          background/line-width: 4;
-          line/line-color: #aaa;
-          line/line-width: 1.5;
+          line-dasharray: 5,3;
         }
       }
     }
@@ -1473,26 +1565,20 @@
         line/line-width: 1.2;
         line/line-color: #999;
         dashes/line-width: 3;
-        dashes/line-color: #999;
-        dashes/line-dasharray: 1,10;
-      }
-    }
-
-    [feature = 'railway_tram'] {
-      .tunnels-fill {
-        [zoom >= 13] {
-          line-width: 1;
-          line-dasharray: 5,3;
-          line-color: #444;
-          [zoom >= 15] { line-width: 2; }
-        }
+        dashes/line-color: #999;
+        dashes/line-dasharray: 1,10;
       }
     }
 
-    [feature = 'railway_light_rail'] {
-      [zoom >= 13] {
-        line-width: 2;
-        line-color: #666;
+    [feature = 'railway_tram'] {
+      [zoom >= 8] {
+        line-color: #ccc;
+        [zoom >= 10] { line-color: #aaa; }
+        [zoom >= 13] { line-color: #444; }
+        line-width: 1;
+        [zoom >= 15] {
+          line-width: 2;
+        }
         .tunnels-fill {
           line-dasharray: 5,3;
         }
@@ -1563,7 +1649,6 @@
     }
 
     [feature = 'railway_disused'],
-    [feature = 'railway_abandoned'],
     [feature = 'railway_construction'] {
       [zoom >= 13] {
         line-color: grey;
@@ -1594,27 +1679,25 @@
     }
 
     [feature = 'aeroway_runway'] {
-      [zoom >= 11][zoom < 14] {
-        line-width: 2;
+      [zoom >= 11] {
         line-color: @runway-fill;
+        line-width: 2;
         [zoom >= 12] { line-width: 4; }
-        [zoom >= 13] { line-width: 7; }
-      }
-      [zoom >= 14] {
-        line-width: 18;
-        line-color: @runway-fill;
+        [zoom >= 13] { line-width: 6; }
+        [zoom >= 14] { line-width: 12; }
+        [zoom >= 15] { line-width: 18; }
+        [zoom >= 16] { line-width: 24; }
       }
     }
 
     [feature = 'aeroway_taxiway'] {
-      [zoom >= 11][zoom < 14] {
-        line-width: 1;
-        line-color: @taxiway-fill;
-      }
-      [zoom >= 14] {
-        line-width: 4;
+      [zoom >= 11] {
         line-color: @taxiway-fill;
+        line-width: 1;
+        [zoom >= 13] { line-width: 2; }
+        [zoom >= 14] { line-width: 4; }
         [zoom >= 15] { line-width: 6; }
+        [zoom >= 16] { line-width: 8; }
       }
     }
   }
@@ -1622,27 +1705,24 @@
 
 #turning-circle-casing {
   [int_tc_type = 'tertiary'][zoom >= 15] {
+    marker-fill: @tertiary-casing;
     marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
     marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
-    marker-allow-overlap: true;
-    marker-ignore-placement: true;
-    marker-line-width: 0;
-    marker-fill: @tertiary-casing;
     [zoom >= 17] {
       marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
       marker-height: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
     }
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
   }
 
   [int_tc_type = 'residential'],
   [int_tc_type = 'unclassified'] {
     [zoom >= 15] {
+      marker-fill: @residential-casing;
       marker-width: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
       marker-height: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8 + 2 * @casing-width-z15;
-      marker-allow-overlap: true;
-      marker-ignore-placement: true;
-      marker-line-width: 0;
-      marker-fill: @residential-casing;
       [zoom >= 16] {
         marker-width: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16;
         marker-height: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8 + 2 * @casing-width-z16;
@@ -1651,16 +1731,16 @@
         marker-width: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
         marker-height: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8 + 2 * @casing-width-z17;
       }
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+      marker-line-width: 0;
     }
   }
 
   [int_tc_type = 'living_street'][zoom >= 15] {
+    marker-fill: @living-street-casing;
     marker-width: 14;
     marker-height: 14;
-    marker-allow-overlap: true;
-    marker-ignore-placement: true;
-    marker-line-width: 0;
-    marker-fill: @living-street-casing;
     [zoom >= 16] {
       marker-width: 18;
       marker-height: 18;
@@ -1669,45 +1749,51 @@
       marker-width: 24;
       marker-height: 24;
     }
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
   }
 
   [int_tc_type = 'service'][zoom >= 16] {
-    marker-width: 14;
-    marker-height: 14;
+    marker-fill: @service-casing;
+    [int_tc_service = 'INT-normal'] {
+      marker-width: 14;
+      marker-height: 14;
+      [zoom >= 17] {
+        marker-width: 16;
+        marker-height: 16;
+      }
+    }
+    [int_tc_service = 'INT-minor'] {
+      marker-width: 12;
+      marker-height: 12;
+    }
     marker-allow-overlap: true;
     marker-ignore-placement: true;
     marker-line-width: 0;
-    marker-fill: @service-casing;
-    [zoom >= 17] {
-      marker-width: 16;
-      marker-height: 16;
-    }
   }
 }
 
 #turning-circle-fill {
   [int_tc_type = 'tertiary'][zoom >= 15] {
+    marker-fill: @tertiary-fill;
     marker-width: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8;
     marker-height: (@tertiary-width-z15 - 2 * @casing-width-z15) * 1.8;
-    marker-allow-overlap: true;
-    marker-ignore-placement: true;
-    marker-line-width: 0;
-    marker-fill: @tertiary-fill;
     [zoom >= 17] {
       marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
-      marker-width: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
+      marker-height: (@tertiary-width-z17 - 2 * @casing-width-z17) * 1.8;
     }
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
   }
 
   [int_tc_type = 'residential'],
   [int_tc_type = 'unclassified'] {
     [zoom >= 15] {
+      marker-fill: @residential-fill;
       marker-width: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8;
       marker-height: (@residential-width-z15 - 2 * @casing-width-z15) * 1.8;
-      marker-allow-overlap: true;
-      marker-ignore-placement: true;
-      marker-line-width: 0;
-      marker-fill: @residential-fill;
       [zoom >= 16] {
         marker-width: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8;
         marker-height: (@residential-width-z16 - 2 * @casing-width-z16) * 1.8;
@@ -1716,16 +1802,16 @@
         marker-width: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8;
         marker-height: (@residential-width-z17 - 2 * @casing-width-z17) * 1.8;
       }
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+      marker-line-width: 0;
     }
   }
 
   [int_tc_type = 'living_street'][zoom >= 15] {
+    marker-fill: @living-street-fill;
     marker-width: 12;
     marker-height: 12;
-    marker-allow-overlap: true;
-    marker-ignore-placement: true;
-    marker-line-width: 0;
-    marker-fill: @living-street-fill;
     [zoom >= 16] {
       marker-width: 16;
       marker-height: 16;
@@ -1734,19 +1820,28 @@
       marker-width: 22;
       marker-height: 22;
     }
+    marker-allow-overlap: true;
+    marker-ignore-placement: true;
+    marker-line-width: 0;
   }
 
   [int_tc_type = 'service'][zoom >= 16] {
-    marker-width: 12;
-    marker-height: 12;
+    marker-fill: @service-fill;
+    [int_tc_service = 'INT-normal'] {
+      marker-width: 12;
+      marker-height: 12;
+      [zoom >= 17] {
+        marker-width: 14;
+        marker-height: 14;
+      }
+    }
+    [int_tc_service = 'INT-minor'] {
+      marker-width: 10;
+      marker-height: 10;
+    }
     marker-allow-overlap: true;
     marker-ignore-placement: true;
     marker-line-width: 0;
-    marker-fill: @service-fill;
-    [zoom >= 17] {
-      marker-width: 14;
-      marker-height: 14;
-    }
   }
 }
 
@@ -1762,6 +1857,7 @@
   [feature = 'highway_pedestrian'],
   [feature = 'highway_service'],
   [feature = 'highway_footway'],
+  [feature = 'highway_cycleway'],
   [feature = 'highway_path'] {
     [zoom >= 14] {
       line-color: grey;
@@ -1771,7 +1867,10 @@
 
   [feature = 'highway_track'][zoom >= 14] {
     line-color: @track-fill;
-    line-width: 2;
+    line-width: 1;
+    line-dasharray: 5,4,2,4;
+    line-cap: round;
+    line-join: round;
   }
 
   [feature = 'highway_platform'],
@@ -1800,6 +1899,7 @@
 
   [feature = 'highway_pedestrian'],
   [feature = 'highway_footway'],
+  [feature = 'highway_cycleway'],
   [feature = 'highway_path'] {
     [zoom >= 14] {
       polygon-fill: #ededed;
@@ -1807,7 +1907,7 @@
   }
 
   [feature = 'highway_track'][zoom >= 14] {
-    polygon-fill: #dfcc66;
+    polygon-fill: #cdbea0;
   }
 
   [feature = 'highway_platform'],
@@ -1831,59 +1931,64 @@
   }
 }
 
-#highway-junctions {
-  [zoom >= 11] {
-    ref/text-name: "[ref]";
-    ref/text-size: 10;
-    ref/text-fill: #6666ff;
-    ref/text-min-distance: 2;
-    ref/text-face-name: @oblique-fonts;
-    ref/text-halo-radius: 1.5;
-    ref/text-wrap-width: 12;
-    [zoom >= 12] {
-      name/text-name: "[name]";
-      name/text-size: 9;
-      name/text-fill: #6666ff;
-      name/text-dy: -9;
-      name/text-face-name: @oblique-fonts;
-      name/text-halo-radius: 1;
-      name/text-wrap-character: ";";
-      name/text-wrap-width: 2;
-      name/text-min-distance: 2;
-    }
-    [zoom >= 15] {
-      ref/text-size: 12;
-      name/text-size: 11;
-      name/text-dy: -10;
+#junctions {
+  [highway = 'motorway_junction'] {
+    [zoom >= 11] {
+      ref/text-name: "[ref]";
+      ref/text-size: 10;
+      ref/text-fill: #6666ff;
+      ref/text-min-distance: 2;
+      ref/text-face-name: @oblique-fonts;
+      ref/text-halo-radius: 1.5;
+      [zoom >= 12] {
+        name/text-name: "[name]";
+        name/text-size: 9;
+        name/text-fill: #6666ff;
+        name/text-dy: -9;
+        name/text-face-name: @oblique-fonts;
+        name/text-halo-radius: 1;
+        name/text-wrap-character: ";";
+        name/text-wrap-width: 2;
+        name/text-min-distance: 2;
+      }
+      [zoom >= 15] {
+        ref/text-size: 12;
+        name/text-size: 11;
+        name/text-dy: -10;
+      }
     }
   }
-}
 
-.access::fill {
-  [access = 'permissive'] {
-    [feature = 'highway_unclassified'],
-    [feature = 'highway_residential'],
-    [feature = 'highway_footway'] {
+  [junction = 'yes'],
+  [highway = 'traffic_signals'] {
+    [zoom >= 14] {
+      text-name: "[name]";
+      text-size: 8;
+      text-fill: black;
+      text-face-name: @book-fonts;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-wrap-width: 30;
+      text-min-distance: 2;
+      [zoom >= 14] {
+        text-size: 9;
+      }
       [zoom >= 15] {
-        access/line-width: 6;
-        access/line-color: @permissive-marking;
-        access/line-dasharray: 6,8;
-        access/line-cap: round;
-        access/line-join: round;
-        access/line-opacity: 0.5;
+        text-size: 10;
+      }
+      [zoom >= 17] {
+        text-size: 11;
+        /* Offset name on traffic_signals on zoomlevels where they are displayed
+        in order not to hide the text */
+        [highway = 'traffic_signals'] {
+          text-dy: 14;
+        }
       }
-    }
-    [feature = 'highway_service'][service = 'INT-normal'][zoom >= 15],
-    [feature = 'highway_service'][zoom >= 16] {
-      access/line-width: 3;
-      access/line-color: @permissive-marking;
-      access/line-dasharray: 6,8;
-      access/line-cap: round;
-      access/line-join: round;
-      access/line-opacity: 0.5;
-      [zoom >= 16] { access/line-width: 6; }
     }
   }
+}
+
+.access::fill {
   [access = 'destination'] {
     [feature = 'highway_secondary'],
     [feature = 'highway_tertiary'],
@@ -1913,15 +2018,10 @@
   }
   [access = 'no'] {
     [feature = 'highway_motorway'],
-    [feature = 'highway_motorway_link'],
     [feature = 'highway_trunk'],
-    [feature = 'highway_trunk_link'],
     [feature = 'highway_primary'],
-    [feature = 'highway_primary_link'],
     [feature = 'highway_secondary'],
-    [feature = 'highway_secondary_link'],
     [feature = 'highway_tertiary'],
-    [feature = 'highway_tertiary_link'],
     [feature = 'highway_unclassified'],
     [feature = 'highway_residential'],
     [feature = 'highway_road'],
@@ -1953,103 +2053,6 @@
   }
 }
 
-#roads-low-zoom {
-  [feature = 'highway_motorway'],
-  [feature = 'highway_motorway_link'] {
-    [zoom >= 5][zoom < 12] {
-      line-width: 0.5;
-      line-color: @motorway-fill;
-      [zoom >= 7] { line-width: 1; }
-      [zoom >= 9] { line-width: 1.4; }
-      [zoom >= 10] { line-width: 2; }
-      [zoom >= 11] { line-width: 2.5; }
-    }
-  }
-
-  [feature = 'highway_trunk'],
-  [feature = 'highway_trunk_link'] {
-    [zoom >= 5][zoom < 12] {
-      line-width: 0.4;
-      line-color: @trunk-fill;
-      [zoom >= 7] {
-        line-width: 1;
-        line-color: @trunk-fill-alternative;
-      }
-      [zoom >= 9] { line-width: 2; }
-      [zoom >= 11] { line-width: 2.5; }
-    }
-  }
-
-  [feature = 'highway_primary'],
-  [feature = 'highway_primary_link'] {
-    [zoom >= 7][zoom < 12] {
-      line-width: 0.5;
-      line-color: @primary-fill;
-      [zoom >= 9] { line-width: 1.2; }
-      [zoom >= 10] { line-width: 2; }
-      [zoom >= 11] { line-width: 2.5; }
-    }
-  }
-
-  [feature = 'highway_secondary'],
-  [feature = 'highway_secondary_link'] {
-    [zoom >= 9][zoom < 12] {
-      line-width: 1;
-      line-color: @secondary-fill;
-      [zoom >= 11] { line-width: 2; }
-    }
-  }
-
-  [feature = 'railway_rail'] {
-    [zoom >= 6][zoom < 13] {
-      line-width: 0.6;
-      line-color: #aaa;
-      [zoom >= 9] { line-width: 1; }
-      [zoom >= 10] { line-width: 2; }
-      .tunnels-casing {
-        line-dasharray: 5,2;
-      }
-    }
-  }
-
-  [feature = 'railway_INT-spur-siding-yard'] {
-    [zoom >= 11] {
-      line-width: 1;
-      line-color: #aaa;
-      line-join: round;
-    }
-  }
-
-  [feature = 'railway_tram'],
-  [feature = 'railway_light_rail'],
-  [feature = 'railway_funicular'],
-  [feature = 'railway_narrow_gauge'] {
-    [zoom >= 8][zoom < 13] {
-      line-width: 1;
-      line-color: #ccc;
-      [zoom >= 10] { line-color: #aaa }
-    }
-  }
-}
-
-#trams {
-  [railway = 'tram'][zoom >= 13] {
-    line-color: #444;
-    line-width: 1;
-    [zoom >= 15] {
-      line-width: 2;
-      [bridge = 'yes'] {
-        line-width: 5;
-        line-color: black;
-        b/line-width: 4;
-        b/line-color: white;
-        c/line-width: 2;
-        c/line-color: #444;
-      }
-    }
-  }
-}
-
 #guideways {
   [zoom >= 13] {
     line-width: 3;
@@ -2066,129 +2069,126 @@
 }
 
 #roads-text-ref-low-zoom {
-  [highway = 'motorway'][length < 9] {
-    [zoom >= 10][zoom < 13] {
-      shield-name: "[ref]";
-      shield-size: 10;
-      shield-fill: #fff;
-      shield-placement: line;
-      shield-file: url("symbols/mot_shield[length].png");
-      shield-spacing: 750;
-      shield-min-distance: 30;
-      shield-face-name: @bold-fonts;
-      [length = 7] { shield-file: url('symbols/mot_shield6.png'); }
-      [length = 8] { shield-file: url('symbols/mot_shield7.png'); }
-    }
+  [highway = 'motorway'][zoom >= 10][zoom < 13] {
+    shield-name: "[refs]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/shields/motorway_[width]x[height].svg");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+    shield-clip: false;
   }
 
   [highway = 'trunk'][zoom >= 11][zoom < 13] {
-    shield-name: "[ref]";
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/tru_shield[length].png");
+    shield-file: url("symbols/shields/trunk_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
+    shield-clip: false;
   }
 
   [highway = 'primary'][zoom >= 11][zoom < 13] {
-    shield-name: "[ref]";
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/pri_shield[length].png");
+    shield-file: url("symbols/shields/primary_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
+    shield-clip: false;
   }
 
   [highway = 'secondary'][zoom >= 12][zoom < 13] {
-    shield-name: "[ref]";
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/sec_shield[length].png");
+    shield-file: url("symbols/shields/secondary_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
+    shield-clip: false;
   }
 }
 
 #roads-text-ref {
-  [highway = 'motorway'][length < 9] {
-    [zoom >= 13] {
-      shield-name: "[ref]";
-      shield-size: 10;
-      shield-fill: #fff;
-      shield-placement: line;
-      shield-file: url("symbols/mot_shield[length].png");
-      shield-spacing: 750;
-      shield-min-distance: 30;
-      shield-face-name: @bold-fonts;
-      shield-avoid-edges: true;
-      [length = 7] { shield-file: url('symbols/mot_shield6.png'); }
-      [length = 8] { shield-file: url('symbols/mot_shield7.png'); }
-    }
+  [highway = 'motorway'][zoom >= 13] {
+    shield-name: "[refs]";
+    shield-size: 10;
+    shield-fill: #fff;
+    shield-placement: line;
+    shield-file: url("symbols/shields/motorway_[width]x[height].svg");
+    shield-spacing: 750;
+    shield-min-distance: 30;
+    shield-face-name: @bold-fonts;
+    shield-clip: false;
   }
 
   [highway = 'trunk'][zoom >= 13] {
-    shield-name: "[ref]";
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/tru_shield[length].png");
+    shield-file: url("symbols/shields/trunk_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
-    shield-avoid-edges: true;
+    shield-clip: false;
   }
 
   [highway = 'primary'][zoom >= 13] {
-    shield-name: "[ref]";
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/pri_shield[length].png");
+    shield-file: url("symbols/shields/primary_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
-    shield-avoid-edges: true;
+    shield-clip: false;
   }
 
-  [highway = 'secondary'][bridge = 'no'][zoom >= 13] {
-    shield-name: "[ref]";
+  [highway = 'secondary'][zoom >= 13] {
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/sec_shield[length].png");
+    shield-file: url("symbols/shields/secondary_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
-    shield-avoid-edges: true;
+    shield-clip: false;
   }
 
-  [highway = 'tertiary'][bridge = 'no'][zoom >= 13] {
-    shield-name: "[ref]";
+  [highway = 'tertiary'][zoom >= 13] {
+    shield-name: "[refs]";
     shield-size: 10;
     shield-fill: #fff;
     shield-placement: line;
-    shield-file: url("symbols/ter_shield[length].png");
+    shield-file: url("symbols/shields/tertiary_[width]x[height].svg");
     shield-spacing: 750;
     shield-min-distance: 30;
     shield-face-name: @bold-fonts;
-    shield-avoid-edges: true;
+    shield-clip: false;
   }
 
   [highway = 'unclassified'],
   [highway = 'residential'] {
-    [zoom >= 15][bridge = 'no'] {
-      text-name: "[ref]";
+    [zoom >= 15] {
+      text-name: "[refs]";
       text-size: 10;
       text-fill: #000;
       text-face-name: @bold-fonts;
       text-min-distance: 18;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
       text-spacing: 750;
       text-clip: false;
     }
@@ -2196,8 +2196,8 @@
 
   [highway = 'runway'],
   [highway = 'taxiway'] {
-    [zoom >= 15][bridge = 'no'] {
-      text-name: "[ref]";
+    [zoom >= 15] {
+      text-name: "[refs]";
       text-size: 10;
       text-fill: #333;
       text-spacing: 750;
@@ -2206,17 +2206,15 @@
       text-min-distance: 18;
       text-face-name: @book-fonts;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
     }
   }
 }
 
 #roads-text-name {
   [highway = 'motorway'],
-  [highway = 'motorway_link'],
   [highway = 'trunk'],
-  [highway = 'trunk_link'],
-  [highway = 'primary'],
-  [highway = 'primary_link'] {
+  [highway = 'primary'] {
     [zoom >= 13] {
       text-name: "[name]";
       text-size: 8;
@@ -2225,7 +2223,12 @@
       text-clip: false;
       text-placement: line;
       text-face-name: @book-fonts;
-      text-halo-radius: 0;
+      [tunnel = 'no'] {
+        text-halo-radius: 1;
+        [highway = 'motorway'] { text-halo-fill: @motorway-fill; }
+        [highway = 'trunk'] { text-halo-fill: @trunk-fill; }
+        [highway = 'primary'] { text-halo-fill: @primary-fill; }
+      }
     }
     [zoom >= 14] {
       text-size: 9;
@@ -2233,9 +2236,11 @@
     [zoom >= 15] {
       text-size: 10;
     }
+    [zoom >= 17] {
+      text-size: 11;
+    }
   }
-  [highway = 'secondary'],
-  [highway = 'secondary_link'] {
+  [highway = 'secondary'] {
     [zoom >= 13] {
       text-name: "[name]";
       text-size: 8;
@@ -2244,7 +2249,8 @@
       text-clip: false;
       text-placement: line;
       text-face-name: @book-fonts;
-      text-halo-radius: 0;
+      text-halo-radius: 1;
+      text-halo-fill: @secondary-fill; 
     }
     [zoom >= 14] {
       text-size: 9;
@@ -2252,49 +2258,73 @@
     [zoom >= 15] {
       text-size: 10;
     }
+    [zoom >= 17] {
+      text-size: 11;
+    }
   }
   [highway = 'tertiary'],
   [highway = 'tertiary_link'] {
-    [zoom >= 15] {
+    [zoom >= 14] {
       text-name: "[name]";
       text-size: 9;
-      text-fill: #000;
+      text-fill: black;
       text-spacing: 300;
       text-clip: false;
       text-placement: line;
       text-face-name: @book-fonts;
-      text-halo-radius: 0;
+      text-halo-radius: 1;
+      text-halo-fill: @tertiary-fill;
     }
     [zoom >= 17] {
       text-size: 11;
     }
   }
-  [highway = 'proposed'],
-  [highway = 'construction'] {
-    [zoom >= 13] {
+  [highway = 'proposed'] {
+    [zoom >= 15] {
       text-name: "[name]";
       text-size: 9;
-      text-fill: #000;
+      text-fill: black;
       text-spacing: 300;
       text-clip: false;
       text-placement: line;
-      text-face-name: @book-fonts;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-face-name: @book-fonts;
+      text-opacity: 0.3;
     }
-    [zoom >= 16] {
+    [zoom >= 17] {
       text-size: 11;
     }
   }
+  [highway = 'construction'] {
+    [int_construction_minor = 'no'][zoom >= 13],
+    [int_construction_minor = 'yes'][zoom >= 14] {
+      text-name: "[name]";
+      text-size: 9;
+      text-fill: black;
+      text-spacing: 300;
+      text-clip: false;
+      text-placement: line;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-face-name: @book-fonts;
+      [zoom >= 17] {
+        text-size: 11;
+      }
+    }
+  }
   [highway = 'residential'],
   [highway = 'unclassified'],
   [highway = 'road'] {
     [zoom >= 15] {
       text-name: "[name]";
       text-size: 8;
+      text-fill: black;
       text-spacing: 300;
       text-clip: false;
       text-placement: line;
       text-halo-radius: 1;
+      text-halo-fill: @residential-fill;
       text-face-name: @book-fonts;
     }
     [zoom >= 16] {
@@ -2311,9 +2341,13 @@
     [zoom >= 16] {
       text-name: "[name]";
       text-size: 9;
+      text-fill: black;
       text-spacing: 300;
       text-clip: false;
       text-placement: line;
+      text-halo-radius: 1;
+      [highway = 'raceway'] { text-halo-fill: @raceway-fill; }
+      [highway = 'service'] { text-halo-fill: @service-fill; }
       text-face-name: @book-fonts;
     }
     [zoom >= 17] {
@@ -2326,9 +2360,13 @@
     [zoom >= 15] {
       text-name: "[name]";
       text-size: 8;
+      text-fill: black;
       text-spacing: 300;
       text-clip: false;
       text-placement: line;
+      text-halo-radius: 1;
+      [highway = 'living_street'] { text-halo-fill: @living-street-fill; }
+      [highway = 'pedestrian'] { text-halo-fill: @pedestrian-fill; }
       text-face-name: @book-fonts;
     }
     [zoom >= 16] {
@@ -2341,7 +2379,8 @@
 }
 
 #roads-area-text-name {
-  [highway = 'pedestrian'] {
+  [way_pixels > 3000],
+  [zoom >= 17] {
     [zoom >= 15] {
       text-name: "[name]";
       text-size: 8;
@@ -2362,20 +2401,27 @@
   [highway = 'track'] {
     [zoom >= 15] {
       text-name: "[name]";
+      text-fill: #222;
       text-size: 8;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
       text-spacing: 300;
       text-clip: false;
       text-placement: line;
       text-face-name: @book-fonts;
+      text-dy: 5;
     }
     [zoom >= 16] {
       text-size: 9;
+      text-dy: 7;
     }
     [zoom >= 17] {
       text-size: 11;
+      text-dy: 9;
     }
   }
 
+  [highway = 'bridleway'],
   [highway = 'footway'],
   [highway = 'cycleway'],
   [highway = 'path'],
@@ -2385,8 +2431,8 @@
       text-fill: #222;
       text-size: 9;
       text-halo-radius: 1;
-      text-halo-fill: rgba(255,255,255,0.8);
-      text-spacing: 200;
+      text-halo-fill: rgba(255,255,255,0.6);
+      text-spacing: 300;
       text-clip: false;
       text-placement: line;
       text-face-name: @book-fonts;
diff --git a/scripts/create_shield b/scripts/create_shield
new file mode 100755
index 0000000..7fc91ad
--- /dev/null
+++ b/scripts/create_shield
@@ -0,0 +1,34 @@
+#!/bin/bash -e
+
+# A simple script to generate a SVG road shield.
+# Copyright 2014 Paul Norman
+# Released under the Creative Commons CC0 license
+
+# Syntax
+# ./create_shield colour width height xoffset yoffset
+
+# Fixed values
+RADIUS=9
+OUTERLINE=1.5
+WHITELINE=1.5
+
+COLOUR=$1
+WIDTH=$2
+HEIGHT=$3
+XOFFSET=$4
+YOFFSET=$5
+
+
+echo "<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' "\
+"viewBox='0 0 $(bc -q <<< "$WIDTH + $XOFFSET") $(bc -q <<< "$HEIGHT + $YOFFSET")'>"
+
+echo "<rect x='$XOFFSET' y='$YOFFSET' height='$HEIGHT' width='$WIDTH' rx='$RADIUS' fill='$COLOUR'/>"
+
+echo "<rect x='$(bc -q <<< "$XOFFSET + $OUTERLINE")' y='$(bc -q <<< "$YOFFSET + $OUTERLINE")' "\
+"height='$(bc -q <<< "$HEIGHT - 2*$OUTERLINE")' width='$(bc -q <<< "$WIDTH - 2*$OUTERLINE")' "\
+"rx='$(bc -q <<< "$RADIUS - $OUTERLINE")' fill='white'/>"
+
+echo "<rect x='$(bc -q <<< "$XOFFSET + $OUTERLINE + $WHITELINE")' y='$(bc -q <<< "$YOFFSET + $OUTERLINE + $WHITELINE")' "\
+"height='$(bc -q <<< "$HEIGHT - 2*$OUTERLINE - 2*$WHITELINE")' width='$(bc -q <<< "$WIDTH - 2*$OUTERLINE - 2*$WHITELINE")' "\
+"rx='$(bc -q <<< "$RADIUS - $OUTERLINE - $WHITELINE")' fill='$COLOUR'/>"
+echo "</svg>"
diff --git a/scripts/create_standard_shields b/scripts/create_standard_shields
new file mode 100755
index 0000000..be84c50
--- /dev/null
+++ b/scripts/create_standard_shields
@@ -0,0 +1,49 @@
+#!/bin/bash -e
+
+# A simple script that generates the standard road shields.
+# Run from the same directory as create_shield
+# Copyright 2014 Paul Norman
+# Released under the Creative Commons CC0 license
+
+widths='
+1:18
+2:25.25
+3:32.5
+4:39
+5:46
+6:52.5
+7:59.25
+8:66
+9:70.5
+10:75.75
+11:80.75'
+
+colours='motorway:#7788a1
+trunk:#87ab87
+primary:#bb7b7f
+secondary:#c6ad84
+tertiary:#c4c68f'
+
+
+xoffset=1.25
+yoffset=1.75
+
+heights='
+1:18
+2:30
+3:44
+4:54'
+
+for h in $heights; do
+  for w in $widths; do
+    xchars=$(echo $w | awk -F ":" '{print $1}')
+    xpixels=$(echo $w | awk -F ":" '{print $2}')
+    ychars=$(echo $h | awk -F ":" '{print $1}')
+    ypixels=$(echo $h | awk -F ":" '{print $2}')
+    for shield in $colours; do
+      class=$(echo $shield | awk -F ":" '{print $1}')
+      colour=$(echo $shield | awk -F ":" '{print $2}')
+      ./create_shield $colour $xpixels $ypixels $xoffset $yoffset > "${class}_${xchars}x${ychars}.svg"
+    done;
+  done;
+done;
diff --git a/scripts/shop_values.rb b/scripts/shop_values.rb
new file mode 100755
index 0000000..9ab04a7
--- /dev/null
+++ b/scripts/shop_values.rb
@@ -0,0 +1,41 @@
+#!/usr/bin/ruby
+require 'net/http'
+require 'json'
+require 'pp'
+
+MIN_COUNT = 100
+EXCEPTIONS = [
+   "no",
+   "vacant",
+   "empty",
+   "disused",
+   "unknown",
+   "closed",
+   "fixme",
+   "FIXME",
+   "FixMe",
+   "other",
+   "*"
+]
+
+
+url = URI.parse('http://taginfo.openstreetmap.org/api/4/key/values?key=shop&sortname=count&sortorder=desc')
+req = Net::HTTP::Get.new(url.to_s)
+res = Net::HTTP.start(url.host, url.port) {|http|
+   http.request(req)
+}
+
+data = JSON.parse(res.body)["data"]
+
+
+
+# Get an array of values that only includes values with more than MIN_COUNT occurrences
+counted = data.select { |h| h["count"] > MIN_COUNT }.map { |h| h["value"] } 
+# Filter out empty strings
+no_empty = counted.reject { |h| h.strip.empty? } 
+# Filter out exceptions in EXCEPTIONS
+filtered = no_empty - EXCEPTIONS
+
+# Output in SQL style
+puts "(" + filtered.map{ |val| "'#{val}'" }.sort.join(", ") + ")"
+
diff --git a/scripts/travis_check_project_files b/scripts/travis_check_project_files
new file mode 100755
index 0000000..02e8240
--- /dev/null
+++ b/scripts/travis_check_project_files
@@ -0,0 +1,15 @@
+#/bin/sh
+if json=$(scripts/yaml2mml.py < project.yaml); then
+  echo -n "${json}" | diff -q project.mml -
+  ret=$?
+  if [ $ret -ne 0 ]; then
+    echo "project.yaml and project.mml are not in sync!" >&2
+    echo "You should only modify project.yaml, not project.mml and run scripts/yaml2mml.py before committing." >&2
+    echo "Read https://github.com/gravitystorm/openstreetmap-carto/blob/master/CONTRIBUTING.md#editing-layers for further information." >&2
+    exit $ret
+  fi
+else
+  echo "error with yaml2mml, is project.yaml valid?" >&2
+  exit 1
+fi
+
diff --git a/scripts/yaml2mml.py b/scripts/yaml2mml.py
new file mode 100755
index 0000000..8eb3e49
--- /dev/null
+++ b/scripts/yaml2mml.py
@@ -0,0 +1,3 @@
+#!/usr/bin/env python
+import sys, yaml, json
+json.dump(yaml.safe_load(sys.stdin), sys.stdout, indent=2, separators=(',', ': '))
diff --git a/shapefiles.mss b/shapefiles.mss
index 1e8bfa0..76da5b8 100644
--- a/shapefiles.mss
+++ b/shapefiles.mss
@@ -14,6 +14,7 @@
       text-fill: grey;
       text-face-name: @book-fonts;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
     }
   }
 }
diff --git a/stations.mss b/stations.mss
index c414a46..fd260a7 100644
--- a/stations.mss
+++ b/stations.mss
@@ -1,3 +1,5 @@
+ at station-color: #7981b0;
+
 .stations {
   [railway = 'subway_entrance'][zoom >= 18] {
     point-file: url('symbols/walking.n.12.png');
@@ -5,10 +7,13 @@
   }
 
   [railway = 'station'][zoom >= 12] {
-    point-file: url('symbols/halt.png');
-    point-placement: interior;
+    marker-file: url('symbols/square.svg');
+    marker-placement: interior;
+    marker-fill: @station-color;
+    marker-width: 4;
+    marker-clip: false;
     [zoom >= 13] {
-      point-file: url('symbols/station_small.png');
+      marker-width: 6;
     }
     [zoom >= 14] {
       text-name: "[name]";
@@ -17,11 +22,12 @@
       text-fill: #66f;
       text-dy: -8;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
       text-wrap-width: 0;
       text-placement: interior;
     }
     [zoom >= 15] {
-      point-file: url('symbols/station.png');
+      marker-width: 9;
       text-size: 11;
       text-dy: -10;
     }
@@ -31,10 +37,14 @@
   [railway = 'tram_stop'],
   [aerialway = 'station']::aerialway {
     [zoom >= 13] {
-      point-file: url('symbols/halt.png');
+      marker-file: url('symbols/square.svg');
+      marker-placement: interior;
+      marker-fill: @station-color;
+      marker-width: 4;
+      marker-clip: false;
     }
     [zoom >= 15] {
-      point-file: url('symbols/station_small.png');
+      marker-width: 6;
     }
     [zoom >= 14] {
       text-name: "[name]";
@@ -43,6 +53,7 @@
       text-fill: #66f;
       text-dy: -8;
       text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
       text-wrap-width: 0;
       text-placement: interior;
       [zoom >= 15] {
diff --git a/style.mss b/style.mss
index bb9224a..86083cb 100644
--- a/style.mss
+++ b/style.mss
@@ -2,11 +2,18 @@ Map {
   background-color: @water-color;
 }
 
- at book-fonts:    "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
- at bold-fonts:    "DejaVu Sans Bold", "Arundina Sans Bold", "Padauk Bold", 
-                "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
- at oblique-fonts: "DejaVu Sans Oblique", "Arundina Sans Italic", 
-                "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular", "Droid Sans Fallback Regular", "unifont Medium";
+ at book-fonts:    "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular",
+                "Mukti Narrow Regular", "gargi Medium", "TSCu_Paranar Regular", "Tibetan Machine Uni Regular", "Mallige Normal",
+                "Droid Sans Fallback Regular", "Unifont Medium", "unifont Medium";
+ at bold-fonts:    "DejaVu Sans Bold", "Arundina Sans Bold", "Padauk Bold", "Mukti Narrow Bold", "TSCu_Paranar Bold", "Mallige Bold",
+                "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular",
+                "Mukti Narrow Regular", "gargi Medium", "TSCu_Paranar Regular", "Tibetan Machine Uni Regular", "Mallige Normal",
+                "Droid Sans Fallback Regular", "Unifont Medium", "unifont Medium";
+
+ at oblique-fonts: "DejaVu Sans Oblique", "Arundina Sans Italic", "TSCu_Paranar Italic", "Mallige NormalItalic",
+                "DejaVu Sans Book", "Arundina Sans Regular", "Padauk Regular", "Khmer OS Metal Chrieng Regular",
+                "Mukti Narrow Regular", "gargi Medium", "TSCu_Paranar Regular", "Tibetan Machine Uni Regular", "Mallige Normal",
+                "Droid Sans Fallback Regular", "Unifont Medium", "unifont Medium";
 
 @water-color: #b5d0d0;
 @land-color: #f2efe9;
diff --git a/symbols/aerodrome.p.16.png b/symbols/aerodrome.p.16.png
deleted file mode 100644
index 8f13cd7..0000000
Binary files a/symbols/aerodrome.p.16.png and /dev/null differ
diff --git a/symbols/aerodrome.png b/symbols/aerodrome.png
deleted file mode 100644
index 740229f..0000000
Binary files a/symbols/aerodrome.png and /dev/null differ
diff --git a/symbols/aerodrome.svg b/symbols/aerodrome.svg
new file mode 100644
index 0000000..aacb174
--- /dev/null
+++ b/symbols/aerodrome.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 12 12">
+	<path fill-rule="evenodd" d="M 6 0 C 5.254644 0 5 2 5 2 L 5 3.96875 L 0 7.5 L 0 8.5 L 5 7.25 L 5 9.65625 L 3 11 L 3 12 L 6 11.25 L 9 12 L 9 11 L 7 9.65625 L 7 7.25 L 12 8.5 L 12 7.5 L 7 3.96875 L 7 2 C 7 2 6.745356 0 6 0 z"/>
+</svg>
diff --git a/symbols/aiga_parking1.png b/symbols/aiga_parking1.png
deleted file mode 100644
index 641a3c9..0000000
Binary files a/symbols/aiga_parking1.png and /dev/null differ
diff --git a/symbols/allotments.png b/symbols/allotments.png
index d5e2779..43b4e08 100644
Binary files a/symbols/allotments.png and b/symbols/allotments.png differ
diff --git a/symbols/amenity_prison.p.20.png b/symbols/amenity_prison.p.20.png
deleted file mode 100644
index 05425fb..0000000
Binary files a/symbols/amenity_prison.p.20.png and /dev/null differ
diff --git a/symbols/arrow.png b/symbols/arrow.png
deleted file mode 100644
index ffbb1df..0000000
Binary files a/symbols/arrow.png and /dev/null differ
diff --git a/symbols/arrow_back.png b/symbols/arrow_back.png
deleted file mode 100644
index 309ca5d..0000000
Binary files a/symbols/arrow_back.png and /dev/null differ
diff --git a/symbols/atm.16.svg b/symbols/atm.16.svg
new file mode 100644
index 0000000..36a74f8
--- /dev/null
+++ b/symbols/atm.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 2,1 C 1.4576271,1 1,1.4576271 1,2 l 0,2 c 0,0.559322 0.4886174,1 1,1 l 0,-2 12,0 0,2 c 0.511382,0 1,-0.4857094 1,-1 L 15,2 C 15,1.4576271 14.508475,1 14,1 z m 1,3 0,8 c 0,0.599243 0.400757,1 1,1 l 8,0 c 0.527334,0 1,-0.448696 1,-1 l 0,-8 -1,0 0,6 c -1,0 -2,1 -2,2 L 6,12 C 6,11 5,10 4,10 L 4,4 z M 8,5 C 6.4292037,5 5,5.9528024 5,7 5,8.0471976 6.4292037,9 8,9 9.5707963,9 11,8.0471976 11,7 11,5.9528024 9.5707963,5 8,5 z M 3,13.5 C 3,14.554668 3.4247267,15 4,15 l 8,0 c 0.527334,0 1 [...]
+</svg>
diff --git a/symbols/atm.png b/symbols/atm.png
deleted file mode 100644
index 9a1dd5d..0000000
Binary files a/symbols/atm.png and /dev/null differ
diff --git a/symbols/atm2.p.16.png b/symbols/atm2.p.16.png
deleted file mode 100644
index 62caf20..0000000
Binary files a/symbols/atm2.p.16.png and /dev/null differ
diff --git a/symbols/bandb.p.20.png b/symbols/bandb.p.20.png
deleted file mode 100644
index eb7ebb9..0000000
Binary files a/symbols/bandb.p.20.png and /dev/null differ
diff --git a/symbols/bank.16.svg b/symbols/bank.16.svg
new file mode 100644
index 0000000..ea8c60a
--- /dev/null
+++ b/symbols/bank.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 1,3 0,7 c 0,0.627119 0.4237288,1 1,1 l 12,0 c 0.576271,0 1,-0.423729 1,-1 L 15,3 1,3 z m 3,1 8,0 c 0,1 1,2 2,2 l 0,2 c -1,0 -2,1 -2,2 L 4,10 C 4,9 3,8 2,8 L 2,6 C 3,6 4,5 4,4 z M 8,5 C 6.3431459,5 5,5.8954305 5,7 5,8.1045695 6.3431459,9 8,9 9.6568547,9 11,8.1045695 11,7 11,5.8954305 9.6568547,5 8,5 z M 1,11.5 C 1,12.626577 1.4486964,13 2,13 l 12,0 c 0.551304,0 1,-0.445333 1,-1.5 -0.288136,0.271186 -0.559322,0.5 -1,0.5 L 2,12 C 1.559322,12 1.2711864,11.754237 1,11.5 z" />
+</svg>
diff --git a/symbols/bank2.p.16.png b/symbols/bank2.p.16.png
deleted file mode 100644
index a7d30e8..0000000
Binary files a/symbols/bank2.p.16.png and /dev/null differ
diff --git a/symbols/bar.16.svg b/symbols/bar.16.svg
new file mode 100644
index 0000000..0b361ab
--- /dev/null
+++ b/symbols/bar.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 2,2 5.5,6 0,4 C 7.5,12 3,13 3,14 l 10,0 C 13,13 8.5,12 8.5,12 L 8.5,8 14,2 z" />
+</svg>
diff --git a/symbols/bar.p.20.png b/symbols/bar.p.20.png
deleted file mode 100644
index 9b0e48b..0000000
Binary files a/symbols/bar.p.20.png and /dev/null differ
diff --git a/symbols/beach.png b/symbols/beach.png
index ff9e307..7f582ca 100644
Binary files a/symbols/beach.png and b/symbols/beach.png differ
diff --git a/symbols/biergarten.16.svg b/symbols/biergarten.16.svg
new file mode 100644
index 0000000..0fd4973
--- /dev/null
+++ b/symbols/biergarten.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 4,1 C 3,1 2,2 2,3 l 0,10 c 0,1 -1,2 -1,2 l 11,0 c 0,0 -1,-1 -1,-2 l 3,0 c 1,0 1,-1 1,-1 L 15,6 C 15,5 14,4 13,4 L 11,4 11,3 C 11,1.7603028 10.263667,1 9,1 z M 5,2 8,2 C 9.3809813,2 10,2.3528175 10,3 7,3 4.85459,3.19773 5,6 5,8 3,8 3,6 L 3,4 C 3,2.4966359 3.4966359,2 5,2 z m 6,3.5 1,0 c 0.690253,0 1.5,0.027334 1.5,1.5 l 0,4.5 -2.5,0 z m -8,7.5 7,0 0,1 -7,0 z" />
+</svg>
diff --git a/symbols/biergarten.p.16.png b/symbols/biergarten.p.16.png
deleted file mode 100644
index 241a4de..0000000
Binary files a/symbols/biergarten.p.16.png and /dev/null differ
diff --git a/symbols/bollard.png b/symbols/bollard.png
deleted file mode 100644
index 1ea4118..0000000
Binary files a/symbols/bollard.png and /dev/null differ
diff --git a/symbols/buddhist.16.svg b/symbols/buddhist.16.svg
new file mode 100644
index 0000000..e82c2aa
--- /dev/null
+++ b/symbols/buddhist.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8,1.03125 C 7.7538575,1.0291155 7.51543,1.3562643 7.5,2 4.6029845,2.2545513 2.2563153,4.6023818 2,7.5 c -1.2703952,0 -1.28747145,0.96914 0,1 0.2283193,2.916563 2.584827,5.219256 5.5,5.46875 0,1.404649 1,1.356045 1,0 2.935396,-0.222296 5.24644,-2.531918 5.46875,-5.46875 1.394629,0 1.355936,-1 0,-1 C 13.719146,4.5822447 11.417031,2.2268292 8.5,2 8.5,1.3648024 8.2461425,1.0333845 8,1.03125 z m -0.5,2.28125 0,3.5 L 5.03125,4.34375 C 5.7197423,3.7836121 6.5677817,3.4152092 7.5,3.312 [...]
+</svg>
diff --git a/symbols/buddhist.png b/symbols/buddhist.png
deleted file mode 100644
index 9b0cc59..0000000
Binary files a/symbols/buddhist.png and /dev/null differ
diff --git a/symbols/bus_stop.png b/symbols/bus_stop.png
deleted file mode 100644
index e75f6fb..0000000
Binary files a/symbols/bus_stop.png and /dev/null differ
diff --git a/symbols/bus_stop_small.png b/symbols/bus_stop_small.png
deleted file mode 100644
index 6d8b655..0000000
Binary files a/symbols/bus_stop_small.png and /dev/null differ
diff --git a/symbols/cafe.16.svg b/symbols/cafe.16.svg
new file mode 100644
index 0000000..d6060f4
--- /dev/null
+++ b/symbols/cafe.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 2,2 0,6 c 0,2 2,3 4.5,3 C 9,11 11,10 11,8 l 2,0 c 1,0 2,-1 2,-2 L 15,5 C 15,4 14,3 13,3 l -2,0 0,-1 z m 9,2.25 1.75,0 c 0.667788,0 1,0.5628359 1,1.25 0,0.6871641 -0.388201,1.25 -1,1.25 L 11,6.75 z M 1,12 c 0,1 1,2 2,2 l 7,0 c 1,0 2,-1 2,-2 z" />
+</svg>
diff --git a/symbols/cafe.p.16.png b/symbols/cafe.p.16.png
deleted file mode 100644
index 836f8a5..0000000
Binary files a/symbols/cafe.p.16.png and /dev/null differ
diff --git a/symbols/camping.16.svg b/symbols/camping.16.svg
new file mode 100644
index 0000000..12e40a4
--- /dev/null
+++ b/symbols/camping.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 15,15 9.0000011,3.9999992 10.000001,1 9.0000011,1 8.0000012,2.9999995 7.0000003,1 6.0000005,1 7.0000003,3.9999992 1,15 z m -6.9999988,-7.0000008 2.9999998,6.0000018 -6.0000005,0 z" />
+</svg>
diff --git a/symbols/camping.n.16.png b/symbols/camping.n.16.png
deleted file mode 100644
index b769125..0000000
Binary files a/symbols/camping.n.16.png and /dev/null differ
diff --git a/symbols/cemetery_jewish.18.png b/symbols/cemetery_jewish.18.png
deleted file mode 100644
index 316cdd8..0000000
Binary files a/symbols/cemetery_jewish.18.png and /dev/null differ
diff --git a/symbols/christian.16.svg b/symbols/christian.16.svg
new file mode 100644
index 0000000..da6b146
--- /dev/null
+++ b/symbols/christian.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 7.999999,1 C 6.999998,1 7,2 7,2 l -1e-6,3 -4,0 0,2 4,0 L 7,15 9.000001,15 9,7 13,7 13,5 9,5 9,2 C 9,2 9,1 7.999999,1 z" />
+</svg>
diff --git a/symbols/christian3.p.14.png b/symbols/christian3.p.14.png
deleted file mode 100644
index c420f7f..0000000
Binary files a/symbols/christian3.p.14.png and /dev/null differ
diff --git a/symbols/cinema.16.svg b/symbols/cinema.16.svg
new file mode 100644
index 0000000..c383d87
--- /dev/null
+++ b/symbols/cinema.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 2,2 C 1.446,2 1,2.446 1,3 l 0,11 c 0,0.554 0.446,1 1,1 l 12,0 c 0.554,0 1,-0.446 1,-1 L 15,3 C 15,2.446 14.554,2 14,2 L 2,2 z m 0.25,1 0.5,0 C 2.8885,3 3,3.1115 3,3.25 l 0,0.5 C 3,3.8885 2.8885,4 2.75,4 L 2.25,4 C 2.1115,4 2,3.8885 2,3.75 L 2,3.25 C 2,3.1115 2.1115,3 2.25,3 z M 5,3 11,3 11,8 5,8 5,3 z m 8.25,0 0.5,0 C 13.8885,3 14,3.1115 14,3.25 l 0,0.5 C 14,3.8885 13.8885,4 13.75,4 l -0.5,0 C 13.1115,4 13,3.8885 13,3.75 l 0,-0.5 C 13,3.1115 13.1115,3 13.25,3 z m -11,2 0.5,0 C  [...]
+</svg>
diff --git a/symbols/cinema.p.24.png b/symbols/cinema.p.24.png
deleted file mode 100644
index 1a31e65..0000000
Binary files a/symbols/cinema.p.24.png and /dev/null differ
diff --git a/symbols/cliff.png b/symbols/cliff.png
index 0fc0528..b516fe2 100644
Binary files a/symbols/cliff.png and b/symbols/cliff.png differ
diff --git a/symbols/cliff2.png b/symbols/cliff2.png
index 790c7ff..bda2dd7 100644
Binary files a/symbols/cliff2.png and b/symbols/cliff2.png differ
diff --git a/symbols/communications.16.svg b/symbols/communications.16.svg
new file mode 100644
index 0000000..58f31eb
--- /dev/null
+++ b/symbols/communications.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 5,1.40625 C 3.2327602,2.1855669 1.96875,3.9521023 1.96875,6 1.96875,8.0478977 3.2327602,9.8144331 5,10.59375 L 5,9.4375 C 3.8044698,8.7467087 3,7.4881502 3,6 3,4.5118498 3.8044698,3.2532914 5,2.5625 L 5,1.40625 z m 6,0 0,1.15625 C 12.19553,3.2532914 13,4.5118498 13,6 13,7.4881502 12.19553,8.7467087 11,9.4375 l 0,1.15625 C 12.76724,9.8144331 14.03125,8.0478977 14.03125,6 14.03125,3.9521023 12.76724,2.1855669 11,1.40625 z M 6,3.1875 C 4.8429537,3.6043642 4,4.7033306 4,6 4,7.29666 [...]
+</svg>
diff --git a/symbols/communications.p.20.png b/symbols/communications.p.20.png
deleted file mode 100644
index 1000421..0000000
Binary files a/symbols/communications.p.20.png and /dev/null differ
diff --git a/symbols/dentist.16.svg b/symbols/dentist.16.svg
new file mode 100644
index 0000000..8cae7f5
--- /dev/null
+++ b/symbols/dentist.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 8,9 c 2,0 2,1 2,3 0,1 -1.0091211,3 0,3 1,0 1.751359,-1.142963 2,-3 0.248641,-1.857037 0,-3 0,-4 C 12,6 13,4 13,3 13,2 12.599761,1.21742 12,1 10,1 10,2 8,2 6,2 6,1 4,1 3.400799,1.21742 3,2 3,3 c 0,1 1,3 1,5 0,1 -0.1223902,2.57334 0,4 0.1223902,1.42666 1,3 2,3 1.008702,0 0,-2 0,-3 0,-2 0,-3 2,-3 z" />
+</svg>
diff --git a/symbols/doctors.16.svg b/symbols/doctors.16.svg
new file mode 100644
index 0000000..484b399
--- /dev/null
+++ b/symbols/doctors.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8,2 C 6.83929,2 5.6678336,2.5047052 4.875,3.5 4.1875142,4.3630449 4,5 3.90625,6.0000004 1.01009,6.0238004 1,7.0817104 1,14 l 14,0 C 15,7.0817104 14.9899,6.0237504 12.09375,6.0000004 12,5 11.795537,4.3460958 11.125,3.5 10.334655,2.5027279 9.16071,2 8,2 z m 0,2 c 1.281412,-0.00489 2,1 2.0625,2.0000004 l -4.125,0 C 6,5 6.718588,4.0048937 8,4 z m -1,3.0000004 2,0 L 9,9 l 2,0 0,2 -2,0 0,2 -2,0 0,-2 -2,0 0,-2 2,0 z" />
+</svg>
diff --git a/symbols/drinking_water.16.svg b/symbols/drinking_water.16.svg
new file mode 100644
index 0000000..7e7b0af
--- /dev/null
+++ b/symbols/drinking_water.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 2,7 1.5,8 5,0 L 10,7 z M 3.18,8 8.81,8 8.44,10 3.55,10 M 5,6 C 5,4 6,3 8,3 L 9,3 9,2 8,2 C 7,2 7,1 8,1 l 3,0 c 1,0 1,1 0,1 l -1,0 0,1 4,0 0,1.5 -6,0 C 6.9152599,4.4911116 6.5,4.9824765 6.5,6 z" />
+</svg>
diff --git a/symbols/embankment.png b/symbols/embankment.png
new file mode 100644
index 0000000..4e44dbf
Binary files /dev/null and b/symbols/embankment.png differ
diff --git a/symbols/embassy.16.svg b/symbols/embassy.16.svg
new file mode 100644
index 0000000..0d23500
--- /dev/null
+++ b/symbols/embassy.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 9,2 C 6,4 4,2 4,2 l 0,7 c 0,0 2,2 5,0 3,-2 5,0 5,0 L 14,2 C 14,2 12,0 9,2 z M 2.5,1.25 C 2.25,1.25 2,1.5 2,2 l 0,12 c 0,1 1,1 1,0 L 3,2 C 3,1.5 2.75,1.25 2.5,1.25 z" />
+</svg>
diff --git a/symbols/embassy.png b/symbols/embassy.png
deleted file mode 100644
index 909e8dc..0000000
Binary files a/symbols/embassy.png and /dev/null differ
diff --git a/symbols/fast_food.16.svg b/symbols/fast_food.16.svg
new file mode 100644
index 0000000..f537708
--- /dev/null
+++ b/symbols/fast_food.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 6,4 C 3,4 1.960032,6.000799 2,7 L 2,8 14,8 14,7 C 14,6 13,4 10,4 z M 2,9 c -1,0 -1,1 0,1 l 12,0 c 1,0 1,-1 0,-1 z m 0,2.03125 0,0.625 C 2,12.34045 2.81579,13 3.5,13 l 9,0 c 0.68421,0 1.5,-0.65955 1.5,-1.34375 l 0,-0.625 z" />
+</svg>
diff --git a/symbols/fast_food.png b/symbols/fast_food.png
deleted file mode 100644
index 99875e9..0000000
Binary files a/symbols/fast_food.png and /dev/null differ
diff --git a/symbols/firestation.16.svg b/symbols/firestation.16.svg
new file mode 100644
index 0000000..2b9a626
--- /dev/null
+++ b/symbols/firestation.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8,1 C 4.4241613,2.2414283 3,6 3,9 3,12 4.7449329,14.259763 7,15 5,11.741416 5,9 8,7 c -0.5049218,1.3528175 0,4 1,5 0.431455,-0.400757 1,-1.424727 1,-2 2,2 0.562898,3.633261 0,5 1.08818,-0.559102 3,-2 3,-5 C 13,7 11,6 11,3 9.6164844,3.5992431 9,5 9,6 8.0479394,5.4434404 7,3.2464256 8,1 z" />
+</svg>
diff --git a/symbols/firestation.p.16.png b/symbols/firestation.p.16.png
deleted file mode 100644
index cf24559..0000000
Binary files a/symbols/firestation.p.16.png and /dev/null differ
diff --git a/symbols/florist.16.svg b/symbols/florist.16.svg
new file mode 100644
index 0000000..482542d
--- /dev/null
+++ b/symbols/florist.16.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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></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 4,1 C 4.944406,3.8332196 3.233819,7.4334035 7.25,7.938 l 0,5.562 C 7.25,12.033993 4.997226,9 2,9 c 3,2 1,6 5,6 2,0 0,0 2,0 4,0 2,-4 5,-6 -2.997226,0 -5.25,2.944994 -5.25,4.5 l 0,-5.562 C 12.753428,7.4504075 11.055593,3.8332196 12,1 11,1 9.75,4 9.75,4 9.75,4 9,2 8,1 7,2 6.25,4 6.25,4 6.25,4 5,1 4,1 z"
+     id="florist"
+     style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/florist.p.16.png b/symbols/florist.p.16.png
deleted file mode 100644
index 3ed55a5..0000000
Binary files a/symbols/florist.p.16.png and /dev/null differ
diff --git a/symbols/food_bar.p.16.png b/symbols/food_bar.p.16.png
deleted file mode 100644
index da043fb..0000000
Binary files a/symbols/food_bar.p.16.png and /dev/null differ
diff --git a/symbols/food_drinkingtap.p.20.png b/symbols/food_drinkingtap.p.20.png
deleted file mode 100644
index 0a4c25a..0000000
Binary files a/symbols/food_drinkingtap.p.20.png and /dev/null differ
diff --git a/symbols/fuel.16.svg b/symbols/fuel.16.svg
new file mode 100644
index 0000000..fcacd89
--- /dev/null
+++ b/symbols/fuel.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 11.78125,1 -0.625,0.71875 1.1875,1.09375 c 0.03621,0.036212 0.0856,0.084693 0.125,0.125 l -0.25,0.28125 C 11.818532,3.6189681 12.105689,4.1369332 12.25,4.28125 L 13,5.03125 13,11 c 0,1 -0.392136,1 -0.5,1 C 12.392136,12 12,12 12,11 L 12,7 C 12,5.7190916 11,5 10,5 L 10,3 C 10,2.4486964 9.5752733,2 9,2 L 3,2 C 2.400757,2 2,2.4247267 2,3 l 0,12 8,0 0,-9 c 0,0 1,0 1,1 l 0,4 c 0,2 1.239698,2 1.5,2 0.275652,0 1.5,0 1.5,-2 L 14,4 C 14,3 13.713983,2.7907839 13.375,2.46875 L 11.78125,1 z [...]
+</svg>
diff --git a/symbols/fuel.p.16.png b/symbols/fuel.p.16.png
deleted file mode 100644
index 7bab32a..0000000
Binary files a/symbols/fuel.p.16.png and /dev/null differ
diff --git a/symbols/gate.png b/symbols/gate.png
deleted file mode 100644
index 5c5f3b6..0000000
Binary files a/symbols/gate.png and /dev/null differ
diff --git a/symbols/gate.svg b/symbols/gate.svg
new file mode 100644
index 0000000..ff6818b
--- /dev/null
+++ b/symbols/gate.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="6"
+   height="5">
+	<path d="M 0,0 6,0 6,5 0,5 z" fill="#ffffff" />
+	<path d="M 0,1 6,1 6,2 0,2 z" fill="#3f3f3f" />
+	<path d="M 0,3 6,3 6,4 0,4 z" fill="#3f3f3f" />
+	<path d="M 4,0 1,5 2,5 5,0 z" fill="#3f3f3f" />
+</svg>
diff --git a/symbols/gate2.png b/symbols/gate2.png
deleted file mode 100644
index b33e556..0000000
Binary files a/symbols/gate2.png and /dev/null differ
diff --git a/symbols/glacier.png b/symbols/glacier.png
index 0572751..121e891 100644
Binary files a/symbols/glacier.png and b/symbols/glacier.png differ
diff --git a/symbols/glacier2.png b/symbols/glacier2.png
deleted file mode 100644
index 90b1844..0000000
Binary files a/symbols/glacier2.png and /dev/null differ
diff --git a/symbols/golf.p.20.png b/symbols/golf.p.20.png
new file mode 100644
index 0000000..bb915d7
Binary files /dev/null and b/symbols/golf.p.20.png differ
diff --git a/symbols/grave_yard.png b/symbols/grave_yard.png
deleted file mode 100644
index 7499533..0000000
Binary files a/symbols/grave_yard.png and /dev/null differ
diff --git a/symbols/grave_yard_christian.png b/symbols/grave_yard_christian.png
new file mode 100644
index 0000000..0356f79
Binary files /dev/null and b/symbols/grave_yard_christian.png differ
diff --git a/symbols/grave_yard_generic.png b/symbols/grave_yard_generic.png
index 9f91602..9f5fa55 100644
Binary files a/symbols/grave_yard_generic.png and b/symbols/grave_yard_generic.png differ
diff --git a/symbols/grave_yard_jewish.png b/symbols/grave_yard_jewish.png
new file mode 100644
index 0000000..0f3315b
Binary files /dev/null and b/symbols/grave_yard_jewish.png differ
diff --git a/symbols/grey_vertical_hatch.png b/symbols/grey_vertical_hatch.png
new file mode 100644
index 0000000..460c565
Binary files /dev/null and b/symbols/grey_vertical_hatch.png differ
diff --git a/symbols/halt.png b/symbols/halt.png
deleted file mode 100644
index 4085226..0000000
Binary files a/symbols/halt.png and /dev/null differ
diff --git a/symbols/helipad.p.16.png b/symbols/helipad.p.16.png
deleted file mode 100644
index 619513c..0000000
Binary files a/symbols/helipad.p.16.png and /dev/null differ
diff --git a/symbols/helipad.svg b/symbols/helipad.svg
new file mode 100644
index 0000000..eceb8e9
--- /dev/null
+++ b/symbols/helipad.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 16 16">
+	<path fill-rule="evenodd" d="M 8 0.5 C 3.8578644 0.5 0.5 3.8579 0.5 8 C 0.5 12.1421 3.8578644 15.5 8 15.5 C 12.142136 15.5 15.5 12.1421 15.5 8 C 15.5 3.8579 12.142136 0.5 8 0.5 z M 8 1.5 C 11.589851 1.5 14.5 4.4101491 14.5 8 C 14.5 11.589851 11.589851 14.5 8 14.5 C 4.4101491 14.5 1.5 11.589851 1.5 8 C 1.5 4.4101491 4.4101491 1.5 8 1.5 z M 5 3 L 4.25 3.75 L 4.25 12.25 C 4.25 12.2501 4.9999904 13 5 13 L 6 13 L 6 9 L 10 9 L 10 13 L 11 13 L 11.75 12.25 L 11.75 3.75 L 11 3 L 10 3 L 10 7 L 6  [...]
+</svg>
diff --git a/symbols/hindu.png b/symbols/hindu.png
deleted file mode 100644
index c31a93d..0000000
Binary files a/symbols/hindu.png and /dev/null differ
diff --git a/symbols/hinduist.16.svg b/symbols/hinduist.16.svg
new file mode 100644
index 0000000..113725b
--- /dev/null
+++ b/symbols/hinduist.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 7,3 C 7,3 8.598346,5.8202261 11,3.5 11.330985,4 12,5 12,5 12,5 8.5566276,7.3559064 7,3 z M 2,5 C 2.2886214,5.6087858 2.6605301,6.357316 3,7 3.5044529,6 5,6 5,6 6,6 6.7338601,6.3918109 6.7338601,7.0271271 6.7338601,7.6624433 6,8 5,8 5,8 5,9 5,9.5 6.3108541,9.251282 7.0026347,10.289559 6.6821476,11.006988 6.074951,12.36634 2.5039264,12.526644 1,10 c 0,3.987823 3.4414924,4 4,4 2,0 3,-2 3,-4 0.5208035,0.543036 1.354855,0.545623 2,0 0.904803,-0.7652747 1.258697,-2.0101204 2.5,-2 1.5 [...]
+</svg>
diff --git a/symbols/hospital.16.svg b/symbols/hospital.16.svg
new file mode 100644
index 0000000..21b5e9c
--- /dev/null
+++ b/symbols/hospital.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8,0.96875 C 4.1945765,0.96875 1.03125,4.0714285 1.03125,8 c 0,3.928572 3.1633265,7.03125 6.96875,7.03125 3.805424,0 6.96875,-3.102679 6.96875,-7.03125 C 14.96875,4.0714285 11.805424,0.96875 8,0.96875 z m 0,1.0625 c 3.374278,0 6.03125,2.7176196 6.03125,5.96875 0,3.251131 -2.656972,5.96875 -6.03125,5.96875 C 4.6257218,13.96875 1.96875,11.251131 1.96875,8 1.96875,4.7488696 4.6257218,2.03125 8,2.03125 z M 6,3 6,6 3,6 l 0,4 3,0 0,3 4,0 0,-3 3,0 0,-4 -3,0 0,-3 -4,0 z" />
+</svg>
diff --git a/symbols/hospital.p.16.png b/symbols/hospital.p.16.png
deleted file mode 100644
index dd4febf..0000000
Binary files a/symbols/hospital.p.16.png and /dev/null differ
diff --git a/symbols/hospital.png b/symbols/hospital.png
deleted file mode 100644
index 74a249c..0000000
Binary files a/symbols/hospital.png and /dev/null differ
diff --git a/symbols/hostel.p.20.png b/symbols/hostel.p.20.png
index be58f6d..93dcd2f 100644
Binary files a/symbols/hostel.p.20.png and b/symbols/hostel.p.20.png differ
diff --git a/symbols/islamic3.p.16.png b/symbols/islamic3.p.16.png
deleted file mode 100644
index 8746c31..0000000
Binary files a/symbols/islamic3.p.16.png and /dev/null differ
diff --git a/symbols/jewish.16.svg b/symbols/jewish.16.svg
new file mode 100644
index 0000000..ab0db96
--- /dev/null
+++ b/symbols/jewish.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8.03125,1.34375 6,4.875 l -4,0 2,3.5 -2,3.5 4,0 2.03125,3.53125 2,-3.53125 3.96875,0 -1.96875,-3.5 1.96875,-3.5 -3.96875,0 -2,-3.53125 z m 0,2.5 0.59375,1.03125 -1.1875,0 0.59375,-1.03125 z m -3.90625,2.1875 1.21875,0 -0.625,1.0625 L 4.125,6.03125 z m 2.65625,0 2.5,0 1.3125,2.34375 -1.3125,2.34375 -2.5,0 L 5.46875,8.375 6.78125,6.03125 z m 3.90625,0 1.25,0 -0.625,1.09375 -0.625,-1.09375 z m 0.625,3.59375 0.625,1.09375 -1.25,0 0.625,-1.09375 z m -6.59375,0.03125 0.625,1.0625 -1. [...]
+</svg>
diff --git a/symbols/jewish3.p.16.png b/symbols/jewish3.p.16.png
deleted file mode 100644
index 0a11447..0000000
Binary files a/symbols/jewish3.p.16.png and /dev/null differ
diff --git a/symbols/landfill.png b/symbols/landfill.png
deleted file mode 100644
index d08255f..0000000
Binary files a/symbols/landfill.png and /dev/null differ
diff --git a/symbols/level_crossing.png b/symbols/level_crossing.png
deleted file mode 100644
index 5002f6d..0000000
Binary files a/symbols/level_crossing.png and /dev/null differ
diff --git a/symbols/level_crossing.svg b/symbols/level_crossing.svg
new file mode 100644
index 0000000..38cd9b3
--- /dev/null
+++ b/symbols/level_crossing.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 7 7">
+  <path
+    fill="#ffffff"
+    d="m 0,0 1.5,0 2,2 2,-2 1.5,0 0,1.5 -2,2 2,2 L 7,7 5.5,7 3.5,5 1.5,7 0,7 0,5.5 2,3.5 0,1.5 z"
+    id="halo" />
+  <path
+    fill="#4d4d4d"
+    d="M 0.5,0.5 0.5,1 3,3.5 0.5,6 0.5,6.5 1,6.5 3.5,4 6,6.5 6.5,6.5 6.5,6 4,3.5 6.5,1 6.5,0.5 6,0.5 3.5,3 1,0.5 z"
+    id="crossing" />
+</svg>
diff --git a/symbols/level_crossing2.png b/symbols/level_crossing2.png
deleted file mode 100644
index eac7189..0000000
Binary files a/symbols/level_crossing2.png and /dev/null differ
diff --git a/symbols/level_crossing2.svg b/symbols/level_crossing2.svg
new file mode 100644
index 0000000..5b82a44
--- /dev/null
+++ b/symbols/level_crossing2.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 0 11 11">
+  <path
+    fill="#ffffff"
+    d="m 0.5,0.5 2,0 3,3 3,-3 2,0 0,2 -3,3 3,3 0,2 -2,0 -3,-3 -3,3 L 0.5,10.5 0.5,8.5 l 3,-3 -3,-3 z"
+    id="halo" />
+  <path
+    fill="#4d4d4d"
+    d="M 1,1 1,2 4.5,5.5 1,9 1,10 2,10 5.5,6.5 9,10 10,10 10,9 6.5,5.5 10,2 10,1 9,1 5.5,4.5 2,1 z"
+    id="crossing" />
+</svg>
diff --git a/symbols/liftgate.png b/symbols/liftgate.png
deleted file mode 100644
index fd50fe5..0000000
Binary files a/symbols/liftgate.png and /dev/null differ
diff --git a/symbols/liftgate.svg b/symbols/liftgate.svg
new file mode 100644
index 0000000..f95b349
--- /dev/null
+++ b/symbols/liftgate.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="7"
+   height="5">
+	<path d="M 1,0 1,5 3,5 3,2 7,2 7,1 3,1 3,0 z" />
+</svg>
diff --git a/symbols/lock_gate.png b/symbols/lock_gate.png
deleted file mode 100644
index 4fb277e..0000000
Binary files a/symbols/lock_gate.png and /dev/null differ
diff --git a/symbols/london-tube-24.png b/symbols/london-tube-24.png
deleted file mode 100644
index 04c1795..0000000
Binary files a/symbols/london-tube-24.png and /dev/null differ
diff --git a/symbols/marsh.png b/symbols/marsh.png
deleted file mode 100644
index 4ff801e..0000000
Binary files a/symbols/marsh.png and /dev/null differ
diff --git a/symbols/memorial.png b/symbols/memorial.png
deleted file mode 100644
index 9423e10..0000000
Binary files a/symbols/memorial.png and /dev/null differ
diff --git a/symbols/mini_round.png b/symbols/mini_round.png
deleted file mode 100644
index b9a7d2d..0000000
Binary files a/symbols/mini_round.png and /dev/null differ
diff --git a/symbols/mini_roundabout.svg b/symbols/mini_roundabout.svg
new file mode 100644
index 0000000..623f2f5
--- /dev/null
+++ b/symbols/mini_roundabout.svg
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="9"
+   height="9">
+	<circle cx="4.5" cy="4.5" r="4.5" fill="#666666" />
+	<circle cx="4.5" cy="4.5" r="3" fill="white" />
+	<circle cx="4.5" cy="4.5" r="1.5" fill="#666666" />
+</svg>
diff --git a/symbols/miniature_golf.p.20.png b/symbols/miniature_golf.p.20.png
new file mode 100644
index 0000000..2ba80ca
Binary files /dev/null and b/symbols/miniature_golf.p.20.png differ
diff --git a/symbols/mosque.png b/symbols/mosque.png
deleted file mode 100644
index 71b55fa..0000000
Binary files a/symbols/mosque.png and /dev/null differ
diff --git a/symbols/mot_shield1.png b/symbols/mot_shield1.png
deleted file mode 100644
index ce509ff..0000000
Binary files a/symbols/mot_shield1.png and /dev/null differ
diff --git a/symbols/mot_shield2.png b/symbols/mot_shield2.png
deleted file mode 100644
index c9e1965..0000000
Binary files a/symbols/mot_shield2.png and /dev/null differ
diff --git a/symbols/mot_shield3.png b/symbols/mot_shield3.png
deleted file mode 100644
index 9b27a6b..0000000
Binary files a/symbols/mot_shield3.png and /dev/null differ
diff --git a/symbols/mot_shield4.png b/symbols/mot_shield4.png
deleted file mode 100644
index 0c7ba69..0000000
Binary files a/symbols/mot_shield4.png and /dev/null differ
diff --git a/symbols/mot_shield5.png b/symbols/mot_shield5.png
deleted file mode 100644
index 2d0c1dd..0000000
Binary files a/symbols/mot_shield5.png and /dev/null differ
diff --git a/symbols/mot_shield6.png b/symbols/mot_shield6.png
deleted file mode 100644
index 0a97a3d..0000000
Binary files a/symbols/mot_shield6.png and /dev/null differ
diff --git a/symbols/mot_shield7.png b/symbols/mot_shield7.png
deleted file mode 100644
index 35a3dfc..0000000
Binary files a/symbols/mot_shield7.png and /dev/null differ
diff --git a/symbols/mot_shield8.png b/symbols/mot_shield8.png
deleted file mode 100644
index 8f0653d..0000000
Binary files a/symbols/mot_shield8.png and /dev/null differ
diff --git a/symbols/motorway_shield1.png b/symbols/motorway_shield1.png
deleted file mode 100644
index 40111a6..0000000
Binary files a/symbols/motorway_shield1.png and /dev/null differ
diff --git a/symbols/motorway_shield2.png b/symbols/motorway_shield2.png
deleted file mode 100644
index 331c522..0000000
Binary files a/symbols/motorway_shield2.png and /dev/null differ
diff --git a/symbols/motorway_shield3.png b/symbols/motorway_shield3.png
deleted file mode 100644
index 0e4f5fd..0000000
Binary files a/symbols/motorway_shield3.png and /dev/null differ
diff --git a/symbols/motorway_shield4.png b/symbols/motorway_shield4.png
deleted file mode 100644
index 56d7ab8..0000000
Binary files a/symbols/motorway_shield4.png and /dev/null differ
diff --git a/symbols/motorway_shield5.png b/symbols/motorway_shield5.png
deleted file mode 100644
index 2cc5d35..0000000
Binary files a/symbols/motorway_shield5.png and /dev/null differ
diff --git a/symbols/motorway_shield6.png b/symbols/motorway_shield6.png
deleted file mode 100644
index 3ece3f0..0000000
Binary files a/symbols/motorway_shield6.png and /dev/null differ
diff --git a/symbols/mud.png b/symbols/mud.png
index fe031f6..a5aafae 100644
Binary files a/symbols/mud.png and b/symbols/mud.png differ
diff --git a/symbols/museum.16.svg b/symbols/museum.16.svg
new file mode 100644
index 0000000..e34ba58
--- /dev/null
+++ b/symbols/museum.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8,2 2,4 2,5 14,5 14,4 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 6,7 C 6.4973717,7 7,7.5325904 7,8 L 7,12 5,12 5,8 C 5,7.4726661 5.5026283,7 6,7 z m 4,0 c 0.503364,0 1,0.4726661 1,1 l 0,4 -2,0 0,-4 C 9,7.4726661 9.4966359,7 10,7 z" />
+</svg>
diff --git a/symbols/museum.p.16.png b/symbols/museum.p.16.png
deleted file mode 100644
index c58d306..0000000
Binary files a/symbols/museum.p.16.png and /dev/null differ
diff --git a/symbols/muslim.16.svg b/symbols/muslim.16.svg
new file mode 100644
index 0000000..5588fe1
--- /dev/null
+++ b/symbols/muslim.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 7,2 C 3.609585,2 1,4.6096 1,8 c 0,3.3904 2.609585,6 6,6 1.89566,0 3.873911,-0.6497 5,-2 -0.7358,0.479 -2.0565974,1 -3,1 C 6.40733,13 4,10.5927 4,8 4,5.4073 6.40733,3 9,3 9.9434026,3 11.2642,3.5211 12,4 10.873911,2.6498 8.89566,2 7,2 z m 4.5,3 -1,2 L 8,7 10,8.5 9,11 11.5,9.5 14,11 13,8.5 15,7 12.5,7 11.5,5 z" />
+</svg>
diff --git a/symbols/nature_reserve.png b/symbols/nature_reserve.png
deleted file mode 100644
index da01ec8..0000000
Binary files a/symbols/nature_reserve.png and /dev/null differ
diff --git a/symbols/nature_reserve2.png b/symbols/nature_reserve2.png
deleted file mode 100644
index c804a8e..0000000
Binary files a/symbols/nature_reserve2.png and /dev/null differ
diff --git a/symbols/nature_reserve2T.png b/symbols/nature_reserve2T.png
deleted file mode 100644
index 7dd9728..0000000
Binary files a/symbols/nature_reserve2T.png and /dev/null differ
diff --git a/symbols/nature_reserve5.png b/symbols/nature_reserve5.png
deleted file mode 100644
index db28f5e..0000000
Binary files a/symbols/nature_reserve5.png and /dev/null differ
diff --git a/symbols/nature_reserve6.png b/symbols/nature_reserve6.png
deleted file mode 100644
index 6768b56..0000000
Binary files a/symbols/nature_reserve6.png and /dev/null differ
diff --git a/symbols/nature_reserveT.png b/symbols/nature_reserveT.png
deleted file mode 100644
index 4da4863..0000000
Binary files a/symbols/nature_reserveT.png and /dev/null differ
diff --git a/symbols/nightclub.18.svg b/symbols/nightclub.18.svg
new file mode 100644
index 0000000..fd56311
--- /dev/null
+++ b/symbols/nightclub.18.svg
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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 18 18"
+   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></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs6" />
+  <rect
+     width="18"
+     height="18"
+     x="0"
+     y="0"
+     id="canvas"
+     style="fill:none;stroke:none;visibility:hidden" />
+  <g
+     id="nightclub">
+    <path
+       d="m 15.006803,2.0030893 -10.0000002,2 0,8.5624997 c -0.385369,-0.06933 -0.7875721,-0.07549 -1.1875,0.03125 -1.1547814,0.308194 -2.0133171,1.387352 -1.78125,2.25 0.2320671,0.862648 1.5014687,1.370694 2.65625,1.0625 1.1547814,-0.308194 1.8125,-1.336236 1.8125,-2.25 l 0,-6.9687497 7.0000002,-1.375 0,5.6249997 c -0.385334,-0.06124 -0.787622,-0.04422 -1.1875,0.0625 -1.154637,0.308156 -2.013061,1.35615 -1.78125,2.21875 0.232265,0.862479 1.501613,1.370655 2.65625,1.0625 1.154637,-0.3081 [...]
+       id="halo"
+       style="opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    <path
+       d="m 15.006803,2.0030893 -10,2 0,8.5624997 c -0.385369,-0.06933 -0.787572,-0.07549 -1.1875,0.03125 -1.154782,0.308194 -2.013317,1.387352 -1.78125,2.25 0.232067,0.862648 1.501469,1.370694 2.65625,1.0625 1.154781,-0.308194 1.8125,-1.336236 1.8125,-2.25 l 0,-6.9687497 7,-1.375 0,5.6249997 c -0.385334,-0.06124 -0.787622,-0.04422 -1.1875,0.0625 -1.154637,0.308156 -2.013061,1.35615 -1.78125,2.21875 0.232265,0.862479 1.501613,1.370655 2.65625,1.0625 1.154637,-0.308156 1.8125,-1.28125 1.8 [...]
+       id="icon"
+       style="fill:#1a1a1a;fill-opacity:1;fill-rule:nonzero;stroke:none" />
+  </g>
+</svg>
diff --git a/symbols/orchard.png b/symbols/orchard.png
index a889a9e..481f4f4 100644
Binary files a/symbols/orchard.png and b/symbols/orchard.png differ
diff --git a/symbols/parking.p.16.png b/symbols/parking.p.16.png
deleted file mode 100644
index 5860900..0000000
Binary files a/symbols/parking.p.16.png and /dev/null differ
diff --git a/symbols/parking.png b/symbols/parking.png
deleted file mode 100644
index 9e3ad06..0000000
Binary files a/symbols/parking.png and /dev/null differ
diff --git a/symbols/parking.svg b/symbols/parking.svg
new file mode 100644
index 0000000..d93513d
--- /dev/null
+++ b/symbols/parking.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 9 12">
+<path fill-rule="evenodd" d="M 0,0 L 0,12 1.75,12 1.75,7 6,7 A 3.0,3.5 0 0,0 6,0 Z M 1.75,1.75 L 1.75,5.25 5.5,5.25 A 1.58,1.75 0 0,0 5.5,1.75 Z"/>
+</svg>
diff --git a/symbols/parking_private.p.16.png b/symbols/parking_private.p.16.png
deleted file mode 100644
index 756ff7c..0000000
Binary files a/symbols/parking_private.p.16.png and /dev/null differ
diff --git a/symbols/peak.png b/symbols/peak.png
deleted file mode 100644
index 161cf50..0000000
Binary files a/symbols/peak.png and /dev/null differ
diff --git a/symbols/peak.svg b/symbols/peak.svg
new file mode 100644
index 0000000..f63cf5a
--- /dev/null
+++ b/symbols/peak.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="8"
+   height="8">
+	<path d="M 4,1 0,8 8,8 z" />
+</svg>
diff --git a/symbols/pharmacy.16.svg b/symbols/pharmacy.16.svg
new file mode 100644
index 0000000..0f8ffcb
--- /dev/null
+++ b/symbols/pharmacy.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 5,5 -2,2 0,8 10,0 0,-8 -2,-2.0000003 z m 2,2 2,0 0,2 2,0 0,2 -2,0 0,2 -2,0 0,-2 -2,0 0,-2 2,0 z M 5,1 5,4 11,4 11,1 z" />
+</svg>
diff --git a/symbols/pharmacy.p.16.png b/symbols/pharmacy.p.16.png
deleted file mode 100644
index fb1c56c..0000000
Binary files a/symbols/pharmacy.p.16.png and /dev/null differ
diff --git a/symbols/picnic.16.svg b/symbols/picnic.16.svg
new file mode 100644
index 0000000..c2b7129
--- /dev/null
+++ b/symbols/picnic.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 4,3 C 2.6779661,3 2.6779661,4.5 4,4.5 l 8,0 C 13.33909,4.5 13.338983,3 12,3 L 4,3 z M 5,5 4.25,8 2,8 C 0.6779661,8 0.6779661,9.5 2,9.5 L 3.875,9.5 3,13 4.5,13 5.375,9.5 10.625,9.5 11.5,13 13,13 12.125,9.5 14,9.5 C 15.33909,9.5 15.338983,8 14,8 L 11.75,8 11,5 9.5,5 10.25,8 5.75,8 6.5,5 5,5 z" />
+</svg>
diff --git a/symbols/picnic.p.16.png b/symbols/picnic.p.16.png
deleted file mode 100644
index 0eff097..0000000
Binary files a/symbols/picnic.p.16.png and /dev/null differ
diff --git a/symbols/pint.png b/symbols/pint.png
deleted file mode 100644
index d426eea..0000000
Binary files a/symbols/pint.png and /dev/null differ
diff --git a/symbols/place_of_worship.16.svg b/symbols/place_of_worship.16.svg
new file mode 100644
index 0000000..cffa0a0
--- /dev/null
+++ b/symbols/place_of_worship.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 7.5,1 C 6.6715729,1 6,1.6715729 6,2.5 6,3.3284271 6.671573,4 7.5,4 8.3284271,4 9,3.3284271 9,2.5 9,1.6715729 8.328427,1 7.5,1 z M 2.167788,5.573171 3.5,8 l 3,-1 1,4 -2,2 c -0.2711864,0.305085 -0.4661017,0.45872 -0.5,1 0,1 1,1 1,1 l 6,0 c 0,0 1,0 1,-1 0,-1 -1,-1 -1,-1 l -3,0 1,-1 c 1,-1 0.928985,-1.472666 0.8125,-2 L 10,6 C 9.7606097,5.1065832 9.1377884,4.6703491 8,4.85 L 7,5 4,6.5 3,5 C 2.5588374,4.412383 1.8167825,4.9182326 2.167788,5.573171 z" />
+</svg>
diff --git a/symbols/place_of_worship.png b/symbols/place_of_worship.png
deleted file mode 100644
index 95494f5..0000000
Binary files a/symbols/place_of_worship.png and /dev/null differ
diff --git a/symbols/place_of_worship3.p.16.png b/symbols/place_of_worship3.p.16.png
deleted file mode 100644
index d75bbf4..0000000
Binary files a/symbols/place_of_worship3.p.16.png and /dev/null differ
diff --git a/symbols/place_of_worship3.png b/symbols/place_of_worship3.png
deleted file mode 100644
index fb01d05..0000000
Binary files a/symbols/place_of_worship3.png and /dev/null differ
diff --git a/symbols/playground.16.svg b/symbols/playground.16.svg
new file mode 100644
index 0000000..e75a973
--- /dev/null
+++ b/symbols/playground.16.svg
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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">
+  <path
+     d="M 4.40625,2 C 3.65262,2.0471927 2.9985239,2.7448953 3,3.5 3.0002867,4.2852156 3.7147844,4.9994517 4.5,4.9994517 5.2852156,4.9994517 5.9997133,4.2852156 6,3.5 6.0015986,2.6823545 5.2222984,1.9488955 4.40625,2 z m 8,3 C 11.65262,5.0471927 10.998524,5.7448953 11,6.5 c 2.87e-4,0.7852156 0.714784,1.4994517 1.5,1.4994517 0.785216,0 1.499713,-0.7142361 1.5,-1.4994517 C 14.001599,5.6823545 13.222298,4.9488956 12.40625,5 z M 4,5.5 C 2.5290102,5.5 2.1341648,7.3734067 2.03125,8.375 L 1,8 1, [...]
+     id="path4885"
+     style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/playground.p.20.png b/symbols/playground.p.20.png
deleted file mode 100644
index 42db81d..0000000
Binary files a/symbols/playground.p.20.png and /dev/null differ
diff --git a/symbols/police.16.svg b/symbols/police.16.svg
new file mode 100644
index 0000000..f899d8b
--- /dev/null
+++ b/symbols/police.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 6,1 5,2 5,3 11,3 11,2 10,1 z M 5,4 C 4.9667,4.168726 5,4.3395259 5,4.5185186 5,5.9503556 6.61931,7 8,7 9.38069,7 11,5.9503556 11,4.5185186 11,4.3395259 11,4 11,4 z M 5,8 C 3.5810939,8 3.01415,9.876578 3,11 L 3,15 4.53125,15 10,8 z M 11.5,8 6.03125,15 13,15 13,11 C 13,9.8764743 12.727158,8 11.5,8 z" />
+</svg>
diff --git a/symbols/police.p.16.png b/symbols/police.p.16.png
deleted file mode 100644
index 2dd87aa..0000000
Binary files a/symbols/police.p.16.png and /dev/null differ
diff --git a/symbols/post_box.png b/symbols/post_box.png
deleted file mode 100644
index 8731497..0000000
Binary files a/symbols/post_box.png and /dev/null differ
diff --git a/symbols/post_office.png b/symbols/post_office.png
deleted file mode 100644
index 42d9054..0000000
Binary files a/symbols/post_office.png and /dev/null differ
diff --git a/symbols/postoffice.png b/symbols/postoffice.png
deleted file mode 100644
index d0434aa..0000000
Binary files a/symbols/postoffice.png and /dev/null differ
diff --git a/symbols/power_line.png b/symbols/power_line.png
deleted file mode 100644
index ce94c8a..0000000
Binary files a/symbols/power_line.png and /dev/null differ
diff --git a/symbols/power_pole.png b/symbols/power_pole.png
deleted file mode 100644
index ef18a39..0000000
Binary files a/symbols/power_pole.png and /dev/null differ
diff --git a/symbols/power_tower.png b/symbols/power_tower.png
deleted file mode 100644
index 2c963ad..0000000
Binary files a/symbols/power_tower.png and /dev/null differ
diff --git a/symbols/power_tower.svg b/symbols/power_tower.svg
new file mode 100644
index 0000000..a42b96d
--- /dev/null
+++ b/symbols/power_tower.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="7"
+   height="7">
+	<rect width="7" height="7" fill="#868686" />
+	<circle cx="3.5" cy="3.5" r="2.5" fill="white" />
+	<path d="M 0.625,1 6,6.375 6.375,6 1,0.625 z" fill="#868686" />
+	<path d="M 6,0.625 0.625,6 1,6.375 6.375,1 z" fill="#868686" />
+</svg>
diff --git a/symbols/power_tower_3x3.png b/symbols/power_tower_3x3.png
deleted file mode 100644
index 4b1784e..0000000
Binary files a/symbols/power_tower_3x3.png and /dev/null differ
diff --git a/symbols/power_tower_5x5.png b/symbols/power_tower_5x5.png
deleted file mode 100644
index b3a6a2b..0000000
Binary files a/symbols/power_tower_5x5.png and /dev/null differ
diff --git a/symbols/power_tower_small.svg b/symbols/power_tower_small.svg
new file mode 100644
index 0000000..2c88320
--- /dev/null
+++ b/symbols/power_tower_small.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="3"
+   height="3">
+	<rect width="3" height="3" fill="#868686" />
+	<circle cx="1.5" cy="1.5" r="0.5" fill="white" />
+</svg>
diff --git a/symbols/pri_shield1.png b/symbols/pri_shield1.png
deleted file mode 100644
index 1234b38..0000000
Binary files a/symbols/pri_shield1.png and /dev/null differ
diff --git a/symbols/pri_shield2.png b/symbols/pri_shield2.png
deleted file mode 100644
index 880ab4a..0000000
Binary files a/symbols/pri_shield2.png and /dev/null differ
diff --git a/symbols/pri_shield3.png b/symbols/pri_shield3.png
deleted file mode 100644
index a97846a..0000000
Binary files a/symbols/pri_shield3.png and /dev/null differ
diff --git a/symbols/pri_shield4.png b/symbols/pri_shield4.png
deleted file mode 100644
index ee0361c..0000000
Binary files a/symbols/pri_shield4.png and /dev/null differ
diff --git a/symbols/pri_shield5.png b/symbols/pri_shield5.png
deleted file mode 100644
index f68bc7d..0000000
Binary files a/symbols/pri_shield5.png and /dev/null differ
diff --git a/symbols/pri_shield6.png b/symbols/pri_shield6.png
deleted file mode 100644
index 32ac05c..0000000
Binary files a/symbols/pri_shield6.png and /dev/null differ
diff --git a/symbols/pri_shield7.png b/symbols/pri_shield7.png
deleted file mode 100644
index 7e4e2f1..0000000
Binary files a/symbols/pri_shield7.png and /dev/null differ
diff --git a/symbols/pri_shield8.png b/symbols/pri_shield8.png
deleted file mode 100644
index 73fcb3b..0000000
Binary files a/symbols/pri_shield8.png and /dev/null differ
diff --git a/symbols/primary_shield1.png b/symbols/primary_shield1.png
deleted file mode 100644
index f7491b6..0000000
Binary files a/symbols/primary_shield1.png and /dev/null differ
diff --git a/symbols/primary_shield2.png b/symbols/primary_shield2.png
deleted file mode 100644
index 520f8f4..0000000
Binary files a/symbols/primary_shield2.png and /dev/null differ
diff --git a/symbols/primary_shield3.png b/symbols/primary_shield3.png
deleted file mode 100644
index d4dd8e3..0000000
Binary files a/symbols/primary_shield3.png and /dev/null differ
diff --git a/symbols/primary_shield4.png b/symbols/primary_shield4.png
deleted file mode 100644
index 378e737..0000000
Binary files a/symbols/primary_shield4.png and /dev/null differ
diff --git a/symbols/primary_shield5.png b/symbols/primary_shield5.png
deleted file mode 100644
index dc59c40..0000000
Binary files a/symbols/primary_shield5.png and /dev/null differ
diff --git a/symbols/primary_shield6.png b/symbols/primary_shield6.png
deleted file mode 100644
index 606fc12..0000000
Binary files a/symbols/primary_shield6.png and /dev/null differ
diff --git a/symbols/primary_shield7.png b/symbols/primary_shield7.png
deleted file mode 100644
index 9282fc0..0000000
Binary files a/symbols/primary_shield7.png and /dev/null differ
diff --git a/symbols/primary_shield8.png b/symbols/primary_shield8.png
deleted file mode 100644
index 3ccc5d1..0000000
Binary files a/symbols/primary_shield8.png and /dev/null differ
diff --git a/symbols/prison.16.svg b/symbols/prison.16.svg
new file mode 100644
index 0000000..ec7e760
--- /dev/null
+++ b/symbols/prison.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 1,1 1,15 15,15 15,1 1,1 z m 1,1 3,0 0,12 -0.5,0 0,-4.21875 C 4.2009277,10.13501 4,10.5625 4,11 L 4,14 2,14 2,2 z m 4,0 4,0 0,12 -0.5,0 0,-5 -3,0 0,5 L 6,14 6,2 z m 5,0 3,0 0,12 -2,0 0,-3 C 12,10.5625 11.799072,10.13501 11.5,9.78125 L 11.5,14 11,14 11,2 z M 8,4 C 7.3991523,4 6.8666154,4.2680514 6.5,4.6875 l 0,2.625 C 6.8666154,7.7319486 7.3991523,8 8,8 8.6008474,8 9.1333845,7.7319486 9.5,7.3125 l 0,-2.625 C 9.1333845,4.2680514 8.6008474,4 8,4 z" />
+</svg>
diff --git a/symbols/pub.16.svg b/symbols/pub.16.svg
new file mode 100644
index 0000000..f71a431
--- /dev/null
+++ b/symbols/pub.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 3,2 2,12 6,0 2,-12 z m 1.25,1 7.5,0 -0.33,2 -6.86,0 z" />
+</svg>
diff --git a/symbols/pub.p.16.png b/symbols/pub.p.16.png
deleted file mode 100644
index b452a7e..0000000
Binary files a/symbols/pub.p.16.png and /dev/null differ
diff --git a/symbols/pub.png b/symbols/pub.png
deleted file mode 100644
index 3ac26f3..0000000
Binary files a/symbols/pub.png and /dev/null differ
diff --git a/symbols/quarry.png b/symbols/quarry.png
index ab5088e..bfabdc7 100644
Binary files a/symbols/quarry.png and b/symbols/quarry.png differ
diff --git a/symbols/quarry2.png b/symbols/quarry2.png
deleted file mode 100644
index 38dcfac..0000000
Binary files a/symbols/quarry2.png and /dev/null differ
diff --git a/symbols/recycle.png b/symbols/recycle.png
deleted file mode 100644
index 4cf43a1..0000000
Binary files a/symbols/recycle.png and /dev/null differ
diff --git a/symbols/recycling.16.svg b/symbols/recycling.16.svg
new file mode 100644
index 0000000..de9cec4
--- /dev/null
+++ b/symbols/recycling.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 6.1111131,9.690628 4.5133516,6.804047 1.3,6.804047 2.6062101,7.5880837 1.7986781,9.0311016 C 1.7298071,9.1619607 1.6953738,9.2986132 1.6953767,9.4410632 1.6953738,9.583519 1.7298067,9.720173 1.7986781,9.851023 l 1.2710773,2.298282 c 0.057331,-0.166376 0.1146592,-0.309011 0.171995,-0.427902 L 4.8227305,8.9065915 6.1111131,9.690628 z m -2.3879902,2.316224 c -0.091944,0.154416 -0.1379139,0.320611 -0.1379099,0.498585 -4e-6,0.273307 0.094563,0.504931 0.2836852,0.694868 0.189119,0.18 [...]
+</svg>
diff --git a/symbols/recycling.p.16.png b/symbols/recycling.p.16.png
deleted file mode 100644
index 59eb331..0000000
Binary files a/symbols/recycling.p.16.png and /dev/null differ
diff --git a/symbols/recycling.png b/symbols/recycling.png
deleted file mode 100644
index 5381898..0000000
Binary files a/symbols/recycling.png and /dev/null differ
diff --git a/symbols/rental_bicycle.16.svg b/symbols/rental_bicycle.16.svg
new file mode 100644
index 0000000..72497aa
--- /dev/null
+++ b/symbols/rental_bicycle.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 4.5,1 C 3.1192881,1 2,2.1192881 2,3.5 2,4.8807119 3.1192881,6 4.5,6 5.4253425,6 6.2239846,5.4972377 6.65625,4.75 L 8,4.75 l 1,-1 1,1 1,-1 1,1 0.5,0 L 14,3.5 12.5,2.25 6.65625,2.25 C 6.2239846,1.5027623 5.4253425,1 4.5,1 z m -1,2 C 3.7761424,3 4,3.2238576 4,3.5 4,3.7761424 3.7761424,4 3.5,4 3.2238576,4 3,3.7761424 3,3.5 3,3.2238576 3.2238576,3 3.5,3 z m 5.5,3.4375 0.03125,1 L 10,8 10,9 6.25,9 6,9 6,8 6.5,8 c 1,0 1,-1 0,-1 l -2,0 c -1,0 -1,1 0,1 L 5,8 5,9 4.4375,10.375 c -0.04165 [...]
+</svg>
diff --git a/symbols/rental_bicycle.p.20.png b/symbols/rental_bicycle.p.20.png
deleted file mode 100644
index 4bb10e0..0000000
Binary files a/symbols/rental_bicycle.p.20.png and /dev/null differ
diff --git a/symbols/rental_car.16.svg b/symbols/rental_car.16.svg
new file mode 100644
index 0000000..5e8d37c
--- /dev/null
+++ b/symbols/rental_car.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 4.5,1 C 3.1192881,1 2,2.1192881 2,3.5 2,4.8807119 3.1192881,6 4.5,6 5.4253425,6 6.2239846,5.4972377 6.65625,4.75 L 8,4.75 l 1,-1 1,1 1,-1 1,1 0.5,0 L 14,3.5 12.5,2.25 6.65625,2.25 C 6.2239846,1.5027623 5.4253425,1 4.5,1 z m -1,2 C 3.7761424,3 4,3.2238576 4,3.5 4,3.7761424 3.7761424,4 3.5,4 3.2238576,4 3,3.7761424 3,3.5 3,3.2238576 3.2238576,3 3.5,3 z M 5,7 4,10 c -0.4726661,0 -1,0.384295 -1,1 l 0,3 1,0 c 0,0 0,1 1,1 1,0 1,-1 1,-1 l 4,0 c 0,0 0,1 1,1 1,0 1,-1 1,-1 l 1,0 0,-3 c 0 [...]
+</svg>
diff --git a/symbols/restaurant.16.svg b/symbols/restaurant.16.svg
new file mode 100644
index 0000000..816134d
--- /dev/null
+++ b/symbols/restaurant.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <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" />
+</svg>
diff --git a/symbols/restaurant.p.16.png b/symbols/restaurant.p.16.png
deleted file mode 100644
index 5c41008..0000000
Binary files a/symbols/restaurant.p.16.png and /dev/null differ
diff --git a/symbols/rock_overlay.png b/symbols/rock_overlay.png
new file mode 100644
index 0000000..896e78d
Binary files /dev/null and b/symbols/rock_overlay.png differ
diff --git a/symbols/saddle.svg b/symbols/saddle.svg
new file mode 100644
index 0000000..ac6c356
--- /dev/null
+++ b/symbols/saddle.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="8"
+   height="8">
+	<path d="M 0,3 0,8 8,8 8,3 4,5 z" />
+</svg>
diff --git a/symbols/school.png b/symbols/school.png
deleted file mode 100644
index 4c919bf..0000000
Binary files a/symbols/school.png and /dev/null differ
diff --git a/symbols/scree_overlay.png b/symbols/scree_overlay.png
new file mode 100644
index 0000000..718fbb9
Binary files /dev/null and b/symbols/scree_overlay.png differ
diff --git a/symbols/scrub.png b/symbols/scrub.png
index 7668027..b43233a 100644
Binary files a/symbols/scrub.png and b/symbols/scrub.png differ
diff --git a/symbols/sec_shield1.png b/symbols/sec_shield1.png
deleted file mode 100644
index 3b22e6c..0000000
Binary files a/symbols/sec_shield1.png and /dev/null differ
diff --git a/symbols/sec_shield2.png b/symbols/sec_shield2.png
deleted file mode 100644
index 3a19224..0000000
Binary files a/symbols/sec_shield2.png and /dev/null differ
diff --git a/symbols/sec_shield3.png b/symbols/sec_shield3.png
deleted file mode 100644
index c7d72d7..0000000
Binary files a/symbols/sec_shield3.png and /dev/null differ
diff --git a/symbols/sec_shield4.png b/symbols/sec_shield4.png
deleted file mode 100644
index 656817a..0000000
Binary files a/symbols/sec_shield4.png and /dev/null differ
diff --git a/symbols/sec_shield5.png b/symbols/sec_shield5.png
deleted file mode 100644
index 2918b07..0000000
Binary files a/symbols/sec_shield5.png and /dev/null differ
diff --git a/symbols/sec_shield6.png b/symbols/sec_shield6.png
deleted file mode 100644
index 4e1552b..0000000
Binary files a/symbols/sec_shield6.png and /dev/null differ
diff --git a/symbols/sec_shield7.png b/symbols/sec_shield7.png
deleted file mode 100644
index 04035ca..0000000
Binary files a/symbols/sec_shield7.png and /dev/null differ
diff --git a/symbols/sec_shield8.png b/symbols/sec_shield8.png
deleted file mode 100644
index 2c91468..0000000
Binary files a/symbols/sec_shield8.png and /dev/null differ
diff --git a/symbols/secondary_shield1.png b/symbols/secondary_shield1.png
deleted file mode 100644
index 7f463cc..0000000
Binary files a/symbols/secondary_shield1.png and /dev/null differ
diff --git a/symbols/secondary_shield2.png b/symbols/secondary_shield2.png
deleted file mode 100644
index fe7ebd6..0000000
Binary files a/symbols/secondary_shield2.png and /dev/null differ
diff --git a/symbols/secondary_shield3.png b/symbols/secondary_shield3.png
deleted file mode 100644
index f6c995a..0000000
Binary files a/symbols/secondary_shield3.png and /dev/null differ
diff --git a/symbols/secondary_shield4.png b/symbols/secondary_shield4.png
deleted file mode 100644
index dd91317..0000000
Binary files a/symbols/secondary_shield4.png and /dev/null differ
diff --git a/symbols/secondary_shield5.png b/symbols/secondary_shield5.png
deleted file mode 100644
index a9aa38f..0000000
Binary files a/symbols/secondary_shield5.png and /dev/null differ
diff --git a/symbols/secondary_shield6.png b/symbols/secondary_shield6.png
deleted file mode 100644
index e3dcb46..0000000
Binary files a/symbols/secondary_shield6.png and /dev/null differ
diff --git a/symbols/secondary_shield7.png b/symbols/secondary_shield7.png
deleted file mode 100644
index a90b587..0000000
Binary files a/symbols/secondary_shield7.png and /dev/null differ
diff --git a/symbols/secondary_shield8.png b/symbols/secondary_shield8.png
deleted file mode 100644
index 71feabf..0000000
Binary files a/symbols/secondary_shield8.png and /dev/null differ
diff --git a/symbols/shields/motorway_10x1.svg b/symbols/shields/motorway_10x1.svg
new file mode 100644
index 0000000..7298065
--- /dev/null
+++ b/symbols/shields/motorway_10x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='75.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='69.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_10x2.svg b/symbols/shields/motorway_10x2.svg
new file mode 100644
index 0000000..14861c4
--- /dev/null
+++ b/symbols/shields/motorway_10x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='75.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='69.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_10x3.svg b/symbols/shields/motorway_10x3.svg
new file mode 100644
index 0000000..28fcf9e
--- /dev/null
+++ b/symbols/shields/motorway_10x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='75.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='69.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_10x4.svg b/symbols/shields/motorway_10x4.svg
new file mode 100644
index 0000000..8432563
--- /dev/null
+++ b/symbols/shields/motorway_10x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='75.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='69.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_11x1.svg b/symbols/shields/motorway_11x1.svg
new file mode 100644
index 0000000..98115cf
--- /dev/null
+++ b/symbols/shields/motorway_11x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='80.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='74.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_11x2.svg b/symbols/shields/motorway_11x2.svg
new file mode 100644
index 0000000..d144522
--- /dev/null
+++ b/symbols/shields/motorway_11x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='80.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='74.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_11x3.svg b/symbols/shields/motorway_11x3.svg
new file mode 100644
index 0000000..0ce904a
--- /dev/null
+++ b/symbols/shields/motorway_11x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='80.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='74.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_11x4.svg b/symbols/shields/motorway_11x4.svg
new file mode 100644
index 0000000..89e1849
--- /dev/null
+++ b/symbols/shields/motorway_11x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='80.75' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='74.75' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_1x1.svg b/symbols/shields/motorway_1x1.svg
new file mode 100644
index 0000000..52b0f77
--- /dev/null
+++ b/symbols/shields/motorway_1x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='18' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='12.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_1x2.svg b/symbols/shields/motorway_1x2.svg
new file mode 100644
index 0000000..c5a54e4
--- /dev/null
+++ b/symbols/shields/motorway_1x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='18' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='12.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_1x3.svg b/symbols/shields/motorway_1x3.svg
new file mode 100644
index 0000000..1f27cdd
--- /dev/null
+++ b/symbols/shields/motorway_1x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='18' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='12.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_1x4.svg b/symbols/shields/motorway_1x4.svg
new file mode 100644
index 0000000..b25e005
--- /dev/null
+++ b/symbols/shields/motorway_1x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='18' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='12.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_2x1.svg b/symbols/shields/motorway_2x1.svg
new file mode 100644
index 0000000..4377bf0
--- /dev/null
+++ b/symbols/shields/motorway_2x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='25.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='19.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_2x2.svg b/symbols/shields/motorway_2x2.svg
new file mode 100644
index 0000000..bc932a6
--- /dev/null
+++ b/symbols/shields/motorway_2x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='25.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='19.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_2x3.svg b/symbols/shields/motorway_2x3.svg
new file mode 100644
index 0000000..259359c
--- /dev/null
+++ b/symbols/shields/motorway_2x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='25.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='19.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_2x4.svg b/symbols/shields/motorway_2x4.svg
new file mode 100644
index 0000000..13aa6c3
--- /dev/null
+++ b/symbols/shields/motorway_2x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='25.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='19.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_3x1.svg b/symbols/shields/motorway_3x1.svg
new file mode 100644
index 0000000..f005d07
--- /dev/null
+++ b/symbols/shields/motorway_3x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='32.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='26.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_3x2.svg b/symbols/shields/motorway_3x2.svg
new file mode 100644
index 0000000..35e7fc6
--- /dev/null
+++ b/symbols/shields/motorway_3x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='32.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='26.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_3x3.svg b/symbols/shields/motorway_3x3.svg
new file mode 100644
index 0000000..e3e706d
--- /dev/null
+++ b/symbols/shields/motorway_3x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='32.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='26.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_3x4.svg b/symbols/shields/motorway_3x4.svg
new file mode 100644
index 0000000..cbe8e31
--- /dev/null
+++ b/symbols/shields/motorway_3x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='32.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='26.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_4x1.svg b/symbols/shields/motorway_4x1.svg
new file mode 100644
index 0000000..0ca29fe
--- /dev/null
+++ b/symbols/shields/motorway_4x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='39' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='33.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_4x2.svg b/symbols/shields/motorway_4x2.svg
new file mode 100644
index 0000000..637acf8
--- /dev/null
+++ b/symbols/shields/motorway_4x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='39' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='33.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_4x3.svg b/symbols/shields/motorway_4x3.svg
new file mode 100644
index 0000000..78abfc3
--- /dev/null
+++ b/symbols/shields/motorway_4x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='39' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='33.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_4x4.svg b/symbols/shields/motorway_4x4.svg
new file mode 100644
index 0000000..fdce2eb
--- /dev/null
+++ b/symbols/shields/motorway_4x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='39' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='33.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_5x1.svg b/symbols/shields/motorway_5x1.svg
new file mode 100644
index 0000000..f5bbf52
--- /dev/null
+++ b/symbols/shields/motorway_5x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='46' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='40.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_5x2.svg b/symbols/shields/motorway_5x2.svg
new file mode 100644
index 0000000..ca963cb
--- /dev/null
+++ b/symbols/shields/motorway_5x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='46' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='40.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_5x3.svg b/symbols/shields/motorway_5x3.svg
new file mode 100644
index 0000000..fcba797
--- /dev/null
+++ b/symbols/shields/motorway_5x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='46' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='40.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_5x4.svg b/symbols/shields/motorway_5x4.svg
new file mode 100644
index 0000000..7a8c773
--- /dev/null
+++ b/symbols/shields/motorway_5x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='46' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='40.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_6x1.svg b/symbols/shields/motorway_6x1.svg
new file mode 100644
index 0000000..b777c68
--- /dev/null
+++ b/symbols/shields/motorway_6x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='52.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='46.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_6x2.svg b/symbols/shields/motorway_6x2.svg
new file mode 100644
index 0000000..950ba9b
--- /dev/null
+++ b/symbols/shields/motorway_6x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='52.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='46.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_6x3.svg b/symbols/shields/motorway_6x3.svg
new file mode 100644
index 0000000..1501526
--- /dev/null
+++ b/symbols/shields/motorway_6x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='52.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='46.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_6x4.svg b/symbols/shields/motorway_6x4.svg
new file mode 100644
index 0000000..55397cb
--- /dev/null
+++ b/symbols/shields/motorway_6x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='52.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='46.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_7x1.svg b/symbols/shields/motorway_7x1.svg
new file mode 100644
index 0000000..358e590
--- /dev/null
+++ b/symbols/shields/motorway_7x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='59.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='53.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_7x2.svg b/symbols/shields/motorway_7x2.svg
new file mode 100644
index 0000000..b93b4fc
--- /dev/null
+++ b/symbols/shields/motorway_7x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='59.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='53.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_7x3.svg b/symbols/shields/motorway_7x3.svg
new file mode 100644
index 0000000..219e8e5
--- /dev/null
+++ b/symbols/shields/motorway_7x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='59.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='53.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_7x4.svg b/symbols/shields/motorway_7x4.svg
new file mode 100644
index 0000000..0c74453
--- /dev/null
+++ b/symbols/shields/motorway_7x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='59.25' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='53.25' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_8x1.svg b/symbols/shields/motorway_8x1.svg
new file mode 100644
index 0000000..dc507ad
--- /dev/null
+++ b/symbols/shields/motorway_8x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='66' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='60.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_8x2.svg b/symbols/shields/motorway_8x2.svg
new file mode 100644
index 0000000..14cdafe
--- /dev/null
+++ b/symbols/shields/motorway_8x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='66' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='60.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_8x3.svg b/symbols/shields/motorway_8x3.svg
new file mode 100644
index 0000000..9e68314
--- /dev/null
+++ b/symbols/shields/motorway_8x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='66' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='60.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_8x4.svg b/symbols/shields/motorway_8x4.svg
new file mode 100644
index 0000000..869fbe9
--- /dev/null
+++ b/symbols/shields/motorway_8x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='66' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='60.0' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_9x1.svg b/symbols/shields/motorway_9x1.svg
new file mode 100644
index 0000000..46f21a8
--- /dev/null
+++ b/symbols/shields/motorway_9x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='70.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='15.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='64.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_9x2.svg b/symbols/shields/motorway_9x2.svg
new file mode 100644
index 0000000..d03181a
--- /dev/null
+++ b/symbols/shields/motorway_9x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='70.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='27.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='64.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_9x3.svg b/symbols/shields/motorway_9x3.svg
new file mode 100644
index 0000000..b338ec9
--- /dev/null
+++ b/symbols/shields/motorway_9x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='70.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='41.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='64.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/motorway_9x4.svg b/symbols/shields/motorway_9x4.svg
new file mode 100644
index 0000000..26e2b19
--- /dev/null
+++ b/symbols/shields/motorway_9x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='70.5' rx='9' fill='#7788a1'/>
+<rect x='2.75' y='3.25' height='51.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='64.5' rx='6.0' fill='#7788a1'/>
+</svg>
diff --git a/symbols/shields/primary_10x1.svg b/symbols/shields/primary_10x1.svg
new file mode 100644
index 0000000..9203a6d
--- /dev/null
+++ b/symbols/shields/primary_10x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='75.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='69.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_10x2.svg b/symbols/shields/primary_10x2.svg
new file mode 100644
index 0000000..31e7faf
--- /dev/null
+++ b/symbols/shields/primary_10x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='75.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='69.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_10x3.svg b/symbols/shields/primary_10x3.svg
new file mode 100644
index 0000000..5300559
--- /dev/null
+++ b/symbols/shields/primary_10x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='75.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='69.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_10x4.svg b/symbols/shields/primary_10x4.svg
new file mode 100644
index 0000000..8f5cdb7
--- /dev/null
+++ b/symbols/shields/primary_10x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='75.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='69.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_11x1.svg b/symbols/shields/primary_11x1.svg
new file mode 100644
index 0000000..44d4587
--- /dev/null
+++ b/symbols/shields/primary_11x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='80.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='74.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_11x2.svg b/symbols/shields/primary_11x2.svg
new file mode 100644
index 0000000..4cee0e8
--- /dev/null
+++ b/symbols/shields/primary_11x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='80.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='74.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_11x3.svg b/symbols/shields/primary_11x3.svg
new file mode 100644
index 0000000..06a1708
--- /dev/null
+++ b/symbols/shields/primary_11x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='80.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='74.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_11x4.svg b/symbols/shields/primary_11x4.svg
new file mode 100644
index 0000000..6922ac3
--- /dev/null
+++ b/symbols/shields/primary_11x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='80.75' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='74.75' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_1x1.svg b/symbols/shields/primary_1x1.svg
new file mode 100644
index 0000000..aeed308
--- /dev/null
+++ b/symbols/shields/primary_1x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='18' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='12.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_1x2.svg b/symbols/shields/primary_1x2.svg
new file mode 100644
index 0000000..430b01c
--- /dev/null
+++ b/symbols/shields/primary_1x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='18' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='12.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_1x3.svg b/symbols/shields/primary_1x3.svg
new file mode 100644
index 0000000..bb986a0
--- /dev/null
+++ b/symbols/shields/primary_1x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='18' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='12.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_1x4.svg b/symbols/shields/primary_1x4.svg
new file mode 100644
index 0000000..ffb1da0
--- /dev/null
+++ b/symbols/shields/primary_1x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='18' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='12.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_2x1.svg b/symbols/shields/primary_2x1.svg
new file mode 100644
index 0000000..1b127d4
--- /dev/null
+++ b/symbols/shields/primary_2x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='25.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='19.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_2x2.svg b/symbols/shields/primary_2x2.svg
new file mode 100644
index 0000000..781e422
--- /dev/null
+++ b/symbols/shields/primary_2x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='25.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='19.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_2x3.svg b/symbols/shields/primary_2x3.svg
new file mode 100644
index 0000000..e94cfb3
--- /dev/null
+++ b/symbols/shields/primary_2x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='25.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='19.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_2x4.svg b/symbols/shields/primary_2x4.svg
new file mode 100644
index 0000000..3920749
--- /dev/null
+++ b/symbols/shields/primary_2x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='25.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='19.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_3x1.svg b/symbols/shields/primary_3x1.svg
new file mode 100644
index 0000000..3d92a4a
--- /dev/null
+++ b/symbols/shields/primary_3x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='32.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='26.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_3x2.svg b/symbols/shields/primary_3x2.svg
new file mode 100644
index 0000000..6174498
--- /dev/null
+++ b/symbols/shields/primary_3x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='32.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='26.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_3x3.svg b/symbols/shields/primary_3x3.svg
new file mode 100644
index 0000000..081902d
--- /dev/null
+++ b/symbols/shields/primary_3x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='32.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='26.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_3x4.svg b/symbols/shields/primary_3x4.svg
new file mode 100644
index 0000000..58f9cfd
--- /dev/null
+++ b/symbols/shields/primary_3x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='32.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='26.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_4x1.svg b/symbols/shields/primary_4x1.svg
new file mode 100644
index 0000000..b32c626
--- /dev/null
+++ b/symbols/shields/primary_4x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='39' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='33.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_4x2.svg b/symbols/shields/primary_4x2.svg
new file mode 100644
index 0000000..4faf424
--- /dev/null
+++ b/symbols/shields/primary_4x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='39' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='33.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_4x3.svg b/symbols/shields/primary_4x3.svg
new file mode 100644
index 0000000..ecc09fa
--- /dev/null
+++ b/symbols/shields/primary_4x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='39' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='33.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_4x4.svg b/symbols/shields/primary_4x4.svg
new file mode 100644
index 0000000..c5a12a5
--- /dev/null
+++ b/symbols/shields/primary_4x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='39' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='33.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_5x1.svg b/symbols/shields/primary_5x1.svg
new file mode 100644
index 0000000..af059ca
--- /dev/null
+++ b/symbols/shields/primary_5x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='46' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='40.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_5x2.svg b/symbols/shields/primary_5x2.svg
new file mode 100644
index 0000000..a59bc0d
--- /dev/null
+++ b/symbols/shields/primary_5x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='46' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='40.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_5x3.svg b/symbols/shields/primary_5x3.svg
new file mode 100644
index 0000000..0a2d4b6
--- /dev/null
+++ b/symbols/shields/primary_5x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='46' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='40.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_5x4.svg b/symbols/shields/primary_5x4.svg
new file mode 100644
index 0000000..34aaabf
--- /dev/null
+++ b/symbols/shields/primary_5x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='46' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='40.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_6x1.svg b/symbols/shields/primary_6x1.svg
new file mode 100644
index 0000000..aa972b7
--- /dev/null
+++ b/symbols/shields/primary_6x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='52.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='46.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_6x2.svg b/symbols/shields/primary_6x2.svg
new file mode 100644
index 0000000..c464735
--- /dev/null
+++ b/symbols/shields/primary_6x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='52.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='46.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_6x3.svg b/symbols/shields/primary_6x3.svg
new file mode 100644
index 0000000..96aebab
--- /dev/null
+++ b/symbols/shields/primary_6x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='52.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='46.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_6x4.svg b/symbols/shields/primary_6x4.svg
new file mode 100644
index 0000000..e1360fd
--- /dev/null
+++ b/symbols/shields/primary_6x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='52.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='46.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_7x1.svg b/symbols/shields/primary_7x1.svg
new file mode 100644
index 0000000..c521b7c
--- /dev/null
+++ b/symbols/shields/primary_7x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='59.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='53.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_7x2.svg b/symbols/shields/primary_7x2.svg
new file mode 100644
index 0000000..84ce609
--- /dev/null
+++ b/symbols/shields/primary_7x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='59.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='53.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_7x3.svg b/symbols/shields/primary_7x3.svg
new file mode 100644
index 0000000..08a9a48
--- /dev/null
+++ b/symbols/shields/primary_7x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='59.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='53.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_7x4.svg b/symbols/shields/primary_7x4.svg
new file mode 100644
index 0000000..cf56cc6
--- /dev/null
+++ b/symbols/shields/primary_7x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='59.25' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='53.25' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_8x1.svg b/symbols/shields/primary_8x1.svg
new file mode 100644
index 0000000..513e298
--- /dev/null
+++ b/symbols/shields/primary_8x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='66' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='60.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_8x2.svg b/symbols/shields/primary_8x2.svg
new file mode 100644
index 0000000..c12b3f5
--- /dev/null
+++ b/symbols/shields/primary_8x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='66' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='60.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_8x3.svg b/symbols/shields/primary_8x3.svg
new file mode 100644
index 0000000..f0fba8a
--- /dev/null
+++ b/symbols/shields/primary_8x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='66' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='60.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_8x4.svg b/symbols/shields/primary_8x4.svg
new file mode 100644
index 0000000..06c8705
--- /dev/null
+++ b/symbols/shields/primary_8x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='66' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='60.0' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_9x1.svg b/symbols/shields/primary_9x1.svg
new file mode 100644
index 0000000..6cdc553
--- /dev/null
+++ b/symbols/shields/primary_9x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='70.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='15.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='64.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_9x2.svg b/symbols/shields/primary_9x2.svg
new file mode 100644
index 0000000..1a89a3c
--- /dev/null
+++ b/symbols/shields/primary_9x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='70.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='27.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='64.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_9x3.svg b/symbols/shields/primary_9x3.svg
new file mode 100644
index 0000000..57c57e5
--- /dev/null
+++ b/symbols/shields/primary_9x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='70.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='41.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='64.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/primary_9x4.svg b/symbols/shields/primary_9x4.svg
new file mode 100644
index 0000000..5f7c586
--- /dev/null
+++ b/symbols/shields/primary_9x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='70.5' rx='9' fill='#bb7b7f'/>
+<rect x='2.75' y='3.25' height='51.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='64.5' rx='6.0' fill='#bb7b7f'/>
+</svg>
diff --git a/symbols/shields/secondary_10x1.svg b/symbols/shields/secondary_10x1.svg
new file mode 100644
index 0000000..1e90714
--- /dev/null
+++ b/symbols/shields/secondary_10x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='75.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='69.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_10x2.svg b/symbols/shields/secondary_10x2.svg
new file mode 100644
index 0000000..be0935a
--- /dev/null
+++ b/symbols/shields/secondary_10x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='75.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='69.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_10x3.svg b/symbols/shields/secondary_10x3.svg
new file mode 100644
index 0000000..ac58ec9
--- /dev/null
+++ b/symbols/shields/secondary_10x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='75.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='69.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_10x4.svg b/symbols/shields/secondary_10x4.svg
new file mode 100644
index 0000000..b9afbee
--- /dev/null
+++ b/symbols/shields/secondary_10x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='75.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='69.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_11x1.svg b/symbols/shields/secondary_11x1.svg
new file mode 100644
index 0000000..c7f25ec
--- /dev/null
+++ b/symbols/shields/secondary_11x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='80.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='74.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_11x2.svg b/symbols/shields/secondary_11x2.svg
new file mode 100644
index 0000000..e79d006
--- /dev/null
+++ b/symbols/shields/secondary_11x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='80.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='74.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_11x3.svg b/symbols/shields/secondary_11x3.svg
new file mode 100644
index 0000000..16f52e2
--- /dev/null
+++ b/symbols/shields/secondary_11x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='80.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='74.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_11x4.svg b/symbols/shields/secondary_11x4.svg
new file mode 100644
index 0000000..620e924
--- /dev/null
+++ b/symbols/shields/secondary_11x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='80.75' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='74.75' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_1x1.svg b/symbols/shields/secondary_1x1.svg
new file mode 100644
index 0000000..8cfc21e
--- /dev/null
+++ b/symbols/shields/secondary_1x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='18' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='12.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_1x2.svg b/symbols/shields/secondary_1x2.svg
new file mode 100644
index 0000000..92e6014
--- /dev/null
+++ b/symbols/shields/secondary_1x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='18' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='12.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_1x3.svg b/symbols/shields/secondary_1x3.svg
new file mode 100644
index 0000000..d12fdb6
--- /dev/null
+++ b/symbols/shields/secondary_1x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='18' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='12.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_1x4.svg b/symbols/shields/secondary_1x4.svg
new file mode 100644
index 0000000..d46d7a0
--- /dev/null
+++ b/symbols/shields/secondary_1x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='18' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='12.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_2x1.svg b/symbols/shields/secondary_2x1.svg
new file mode 100644
index 0000000..5c3bacf
--- /dev/null
+++ b/symbols/shields/secondary_2x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='25.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='19.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_2x2.svg b/symbols/shields/secondary_2x2.svg
new file mode 100644
index 0000000..02a6797
--- /dev/null
+++ b/symbols/shields/secondary_2x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='25.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='19.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_2x3.svg b/symbols/shields/secondary_2x3.svg
new file mode 100644
index 0000000..997347a
--- /dev/null
+++ b/symbols/shields/secondary_2x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='25.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='19.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_2x4.svg b/symbols/shields/secondary_2x4.svg
new file mode 100644
index 0000000..5070a31
--- /dev/null
+++ b/symbols/shields/secondary_2x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='25.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='19.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_3x1.svg b/symbols/shields/secondary_3x1.svg
new file mode 100644
index 0000000..62614bb
--- /dev/null
+++ b/symbols/shields/secondary_3x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='32.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='26.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_3x2.svg b/symbols/shields/secondary_3x2.svg
new file mode 100644
index 0000000..0d67319
--- /dev/null
+++ b/symbols/shields/secondary_3x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='32.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='26.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_3x3.svg b/symbols/shields/secondary_3x3.svg
new file mode 100644
index 0000000..60c3739
--- /dev/null
+++ b/symbols/shields/secondary_3x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='32.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='26.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_3x4.svg b/symbols/shields/secondary_3x4.svg
new file mode 100644
index 0000000..1be64ee
--- /dev/null
+++ b/symbols/shields/secondary_3x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='32.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='26.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_4x1.svg b/symbols/shields/secondary_4x1.svg
new file mode 100644
index 0000000..1c4b499
--- /dev/null
+++ b/symbols/shields/secondary_4x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='39' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='33.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_4x2.svg b/symbols/shields/secondary_4x2.svg
new file mode 100644
index 0000000..aaa8245
--- /dev/null
+++ b/symbols/shields/secondary_4x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='39' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='33.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_4x3.svg b/symbols/shields/secondary_4x3.svg
new file mode 100644
index 0000000..1ce851d
--- /dev/null
+++ b/symbols/shields/secondary_4x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='39' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='33.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_4x4.svg b/symbols/shields/secondary_4x4.svg
new file mode 100644
index 0000000..3b0d65a
--- /dev/null
+++ b/symbols/shields/secondary_4x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='39' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='33.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_5x1.svg b/symbols/shields/secondary_5x1.svg
new file mode 100644
index 0000000..b24dded
--- /dev/null
+++ b/symbols/shields/secondary_5x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='46' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='40.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_5x2.svg b/symbols/shields/secondary_5x2.svg
new file mode 100644
index 0000000..2c1a6ea
--- /dev/null
+++ b/symbols/shields/secondary_5x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='46' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='40.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_5x3.svg b/symbols/shields/secondary_5x3.svg
new file mode 100644
index 0000000..354d394
--- /dev/null
+++ b/symbols/shields/secondary_5x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='46' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='40.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_5x4.svg b/symbols/shields/secondary_5x4.svg
new file mode 100644
index 0000000..42e86fa
--- /dev/null
+++ b/symbols/shields/secondary_5x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='46' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='40.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_6x1.svg b/symbols/shields/secondary_6x1.svg
new file mode 100644
index 0000000..16182c5
--- /dev/null
+++ b/symbols/shields/secondary_6x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='52.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='46.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_6x2.svg b/symbols/shields/secondary_6x2.svg
new file mode 100644
index 0000000..4408687
--- /dev/null
+++ b/symbols/shields/secondary_6x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='52.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='46.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_6x3.svg b/symbols/shields/secondary_6x3.svg
new file mode 100644
index 0000000..d6afdf1
--- /dev/null
+++ b/symbols/shields/secondary_6x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='52.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='46.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_6x4.svg b/symbols/shields/secondary_6x4.svg
new file mode 100644
index 0000000..b0ed252
--- /dev/null
+++ b/symbols/shields/secondary_6x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='52.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='46.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_7x1.svg b/symbols/shields/secondary_7x1.svg
new file mode 100644
index 0000000..42c4605
--- /dev/null
+++ b/symbols/shields/secondary_7x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='59.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='53.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_7x2.svg b/symbols/shields/secondary_7x2.svg
new file mode 100644
index 0000000..3e3e037
--- /dev/null
+++ b/symbols/shields/secondary_7x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='59.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='53.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_7x3.svg b/symbols/shields/secondary_7x3.svg
new file mode 100644
index 0000000..6b1eba9
--- /dev/null
+++ b/symbols/shields/secondary_7x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='59.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='53.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_7x4.svg b/symbols/shields/secondary_7x4.svg
new file mode 100644
index 0000000..876cd78
--- /dev/null
+++ b/symbols/shields/secondary_7x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='59.25' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='53.25' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_8x1.svg b/symbols/shields/secondary_8x1.svg
new file mode 100644
index 0000000..4c0ed5f
--- /dev/null
+++ b/symbols/shields/secondary_8x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='66' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='60.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_8x2.svg b/symbols/shields/secondary_8x2.svg
new file mode 100644
index 0000000..8362516
--- /dev/null
+++ b/symbols/shields/secondary_8x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='66' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='60.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_8x3.svg b/symbols/shields/secondary_8x3.svg
new file mode 100644
index 0000000..2922686
--- /dev/null
+++ b/symbols/shields/secondary_8x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='66' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='60.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_8x4.svg b/symbols/shields/secondary_8x4.svg
new file mode 100644
index 0000000..237ae3d
--- /dev/null
+++ b/symbols/shields/secondary_8x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='66' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='60.0' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_9x1.svg b/symbols/shields/secondary_9x1.svg
new file mode 100644
index 0000000..9664a1b
--- /dev/null
+++ b/symbols/shields/secondary_9x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='70.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='15.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='64.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_9x2.svg b/symbols/shields/secondary_9x2.svg
new file mode 100644
index 0000000..64ae0bb
--- /dev/null
+++ b/symbols/shields/secondary_9x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='70.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='27.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='64.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_9x3.svg b/symbols/shields/secondary_9x3.svg
new file mode 100644
index 0000000..3bc7c80
--- /dev/null
+++ b/symbols/shields/secondary_9x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='70.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='41.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='64.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/secondary_9x4.svg b/symbols/shields/secondary_9x4.svg
new file mode 100644
index 0000000..8713f8d
--- /dev/null
+++ b/symbols/shields/secondary_9x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='70.5' rx='9' fill='#c6ad84'/>
+<rect x='2.75' y='3.25' height='51.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='64.5' rx='6.0' fill='#c6ad84'/>
+</svg>
diff --git a/symbols/shields/tertiary_10x1.svg b/symbols/shields/tertiary_10x1.svg
new file mode 100644
index 0000000..76ed878
--- /dev/null
+++ b/symbols/shields/tertiary_10x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='75.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='69.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_10x2.svg b/symbols/shields/tertiary_10x2.svg
new file mode 100644
index 0000000..aff10b5
--- /dev/null
+++ b/symbols/shields/tertiary_10x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='75.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='69.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_10x3.svg b/symbols/shields/tertiary_10x3.svg
new file mode 100644
index 0000000..c5fc4a8
--- /dev/null
+++ b/symbols/shields/tertiary_10x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='75.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='69.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_10x4.svg b/symbols/shields/tertiary_10x4.svg
new file mode 100644
index 0000000..c8eddf7
--- /dev/null
+++ b/symbols/shields/tertiary_10x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='75.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='69.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_11x1.svg b/symbols/shields/tertiary_11x1.svg
new file mode 100644
index 0000000..9cc4f46
--- /dev/null
+++ b/symbols/shields/tertiary_11x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='80.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='74.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_11x2.svg b/symbols/shields/tertiary_11x2.svg
new file mode 100644
index 0000000..81c1c22
--- /dev/null
+++ b/symbols/shields/tertiary_11x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='80.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='74.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_11x3.svg b/symbols/shields/tertiary_11x3.svg
new file mode 100644
index 0000000..5b18b85
--- /dev/null
+++ b/symbols/shields/tertiary_11x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='80.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='74.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_11x4.svg b/symbols/shields/tertiary_11x4.svg
new file mode 100644
index 0000000..ac1fec9
--- /dev/null
+++ b/symbols/shields/tertiary_11x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='80.75' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='74.75' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_1x1.svg b/symbols/shields/tertiary_1x1.svg
new file mode 100644
index 0000000..ca221bc
--- /dev/null
+++ b/symbols/shields/tertiary_1x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='18' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='12.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_1x2.svg b/symbols/shields/tertiary_1x2.svg
new file mode 100644
index 0000000..49e201c
--- /dev/null
+++ b/symbols/shields/tertiary_1x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='18' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='12.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_1x3.svg b/symbols/shields/tertiary_1x3.svg
new file mode 100644
index 0000000..8f2b51e
--- /dev/null
+++ b/symbols/shields/tertiary_1x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='18' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='12.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_1x4.svg b/symbols/shields/tertiary_1x4.svg
new file mode 100644
index 0000000..f5bffed
--- /dev/null
+++ b/symbols/shields/tertiary_1x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='18' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='12.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_2x1.svg b/symbols/shields/tertiary_2x1.svg
new file mode 100644
index 0000000..9c0c7a5
--- /dev/null
+++ b/symbols/shields/tertiary_2x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='25.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='19.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_2x2.svg b/symbols/shields/tertiary_2x2.svg
new file mode 100644
index 0000000..141d769
--- /dev/null
+++ b/symbols/shields/tertiary_2x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='25.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='19.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_2x3.svg b/symbols/shields/tertiary_2x3.svg
new file mode 100644
index 0000000..f82418a
--- /dev/null
+++ b/symbols/shields/tertiary_2x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='25.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='19.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_2x4.svg b/symbols/shields/tertiary_2x4.svg
new file mode 100644
index 0000000..5d7eb09
--- /dev/null
+++ b/symbols/shields/tertiary_2x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='25.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='19.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_3x1.svg b/symbols/shields/tertiary_3x1.svg
new file mode 100644
index 0000000..09d4ca6
--- /dev/null
+++ b/symbols/shields/tertiary_3x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='32.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='26.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_3x2.svg b/symbols/shields/tertiary_3x2.svg
new file mode 100644
index 0000000..44a3df3
--- /dev/null
+++ b/symbols/shields/tertiary_3x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='32.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='26.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_3x3.svg b/symbols/shields/tertiary_3x3.svg
new file mode 100644
index 0000000..57c476f
--- /dev/null
+++ b/symbols/shields/tertiary_3x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='32.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='26.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_3x4.svg b/symbols/shields/tertiary_3x4.svg
new file mode 100644
index 0000000..607d0c4
--- /dev/null
+++ b/symbols/shields/tertiary_3x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='32.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='26.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_4x1.svg b/symbols/shields/tertiary_4x1.svg
new file mode 100644
index 0000000..e24d04a
--- /dev/null
+++ b/symbols/shields/tertiary_4x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='39' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='33.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_4x2.svg b/symbols/shields/tertiary_4x2.svg
new file mode 100644
index 0000000..7f6907d
--- /dev/null
+++ b/symbols/shields/tertiary_4x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='39' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='33.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_4x3.svg b/symbols/shields/tertiary_4x3.svg
new file mode 100644
index 0000000..a5e7f88
--- /dev/null
+++ b/symbols/shields/tertiary_4x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='39' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='33.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_4x4.svg b/symbols/shields/tertiary_4x4.svg
new file mode 100644
index 0000000..23892d8
--- /dev/null
+++ b/symbols/shields/tertiary_4x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='39' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='33.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_5x1.svg b/symbols/shields/tertiary_5x1.svg
new file mode 100644
index 0000000..e92206b
--- /dev/null
+++ b/symbols/shields/tertiary_5x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='46' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='40.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_5x2.svg b/symbols/shields/tertiary_5x2.svg
new file mode 100644
index 0000000..7cd283d
--- /dev/null
+++ b/symbols/shields/tertiary_5x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='46' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='40.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_5x3.svg b/symbols/shields/tertiary_5x3.svg
new file mode 100644
index 0000000..cf2718a
--- /dev/null
+++ b/symbols/shields/tertiary_5x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='46' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='40.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_5x4.svg b/symbols/shields/tertiary_5x4.svg
new file mode 100644
index 0000000..0d69012
--- /dev/null
+++ b/symbols/shields/tertiary_5x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='46' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='40.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_6x1.svg b/symbols/shields/tertiary_6x1.svg
new file mode 100644
index 0000000..1769926
--- /dev/null
+++ b/symbols/shields/tertiary_6x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='52.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='46.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_6x2.svg b/symbols/shields/tertiary_6x2.svg
new file mode 100644
index 0000000..1d4f5ac
--- /dev/null
+++ b/symbols/shields/tertiary_6x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='52.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='46.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_6x3.svg b/symbols/shields/tertiary_6x3.svg
new file mode 100644
index 0000000..a207a3c
--- /dev/null
+++ b/symbols/shields/tertiary_6x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='52.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='46.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_6x4.svg b/symbols/shields/tertiary_6x4.svg
new file mode 100644
index 0000000..0248947
--- /dev/null
+++ b/symbols/shields/tertiary_6x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='52.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='46.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_7x1.svg b/symbols/shields/tertiary_7x1.svg
new file mode 100644
index 0000000..3f47242
--- /dev/null
+++ b/symbols/shields/tertiary_7x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='59.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='53.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_7x2.svg b/symbols/shields/tertiary_7x2.svg
new file mode 100644
index 0000000..d6baacc
--- /dev/null
+++ b/symbols/shields/tertiary_7x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='59.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='53.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_7x3.svg b/symbols/shields/tertiary_7x3.svg
new file mode 100644
index 0000000..aeb9b0a
--- /dev/null
+++ b/symbols/shields/tertiary_7x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='59.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='53.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_7x4.svg b/symbols/shields/tertiary_7x4.svg
new file mode 100644
index 0000000..3dd39e3
--- /dev/null
+++ b/symbols/shields/tertiary_7x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='59.25' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='53.25' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_8x1.svg b/symbols/shields/tertiary_8x1.svg
new file mode 100644
index 0000000..e7877cb
--- /dev/null
+++ b/symbols/shields/tertiary_8x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='66' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='60.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_8x2.svg b/symbols/shields/tertiary_8x2.svg
new file mode 100644
index 0000000..9d4ea49
--- /dev/null
+++ b/symbols/shields/tertiary_8x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='66' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='60.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_8x3.svg b/symbols/shields/tertiary_8x3.svg
new file mode 100644
index 0000000..3d2821f
--- /dev/null
+++ b/symbols/shields/tertiary_8x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='66' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='60.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_8x4.svg b/symbols/shields/tertiary_8x4.svg
new file mode 100644
index 0000000..111b9bc
--- /dev/null
+++ b/symbols/shields/tertiary_8x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='66' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='60.0' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_9x1.svg b/symbols/shields/tertiary_9x1.svg
new file mode 100644
index 0000000..e943c70
--- /dev/null
+++ b/symbols/shields/tertiary_9x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='70.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='15.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='64.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_9x2.svg b/symbols/shields/tertiary_9x2.svg
new file mode 100644
index 0000000..1648907
--- /dev/null
+++ b/symbols/shields/tertiary_9x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='70.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='27.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='64.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_9x3.svg b/symbols/shields/tertiary_9x3.svg
new file mode 100644
index 0000000..ed1b4a1
--- /dev/null
+++ b/symbols/shields/tertiary_9x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='70.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='41.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='64.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/tertiary_9x4.svg b/symbols/shields/tertiary_9x4.svg
new file mode 100644
index 0000000..c506927
--- /dev/null
+++ b/symbols/shields/tertiary_9x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='70.5' rx='9' fill='#c4c68f'/>
+<rect x='2.75' y='3.25' height='51.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='64.5' rx='6.0' fill='#c4c68f'/>
+</svg>
diff --git a/symbols/shields/trunk_10x1.svg b/symbols/shields/trunk_10x1.svg
new file mode 100644
index 0000000..09faf43
--- /dev/null
+++ b/symbols/shields/trunk_10x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='75.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='69.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_10x2.svg b/symbols/shields/trunk_10x2.svg
new file mode 100644
index 0000000..912c42c
--- /dev/null
+++ b/symbols/shields/trunk_10x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='75.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='69.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_10x3.svg b/symbols/shields/trunk_10x3.svg
new file mode 100644
index 0000000..343834f
--- /dev/null
+++ b/symbols/shields/trunk_10x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='75.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='69.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_10x4.svg b/symbols/shields/trunk_10x4.svg
new file mode 100644
index 0000000..e681955
--- /dev/null
+++ b/symbols/shields/trunk_10x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 77.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='75.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='72.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='69.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_11x1.svg b/symbols/shields/trunk_11x1.svg
new file mode 100644
index 0000000..f519e7c
--- /dev/null
+++ b/symbols/shields/trunk_11x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 19.75'>
+<rect x='1.25' y='1.75' height='18' width='80.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='74.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_11x2.svg b/symbols/shields/trunk_11x2.svg
new file mode 100644
index 0000000..ea9b8af
--- /dev/null
+++ b/symbols/shields/trunk_11x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 31.75'>
+<rect x='1.25' y='1.75' height='30' width='80.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='74.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_11x3.svg b/symbols/shields/trunk_11x3.svg
new file mode 100644
index 0000000..7a0bc05
--- /dev/null
+++ b/symbols/shields/trunk_11x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 45.75'>
+<rect x='1.25' y='1.75' height='44' width='80.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='74.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_11x4.svg b/symbols/shields/trunk_11x4.svg
new file mode 100644
index 0000000..4d4cf4b
--- /dev/null
+++ b/symbols/shields/trunk_11x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 82.00 55.75'>
+<rect x='1.25' y='1.75' height='54' width='80.75' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='77.75' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='74.75' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_1x1.svg b/symbols/shields/trunk_1x1.svg
new file mode 100644
index 0000000..3f87f83
--- /dev/null
+++ b/symbols/shields/trunk_1x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='18' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='12.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_1x2.svg b/symbols/shields/trunk_1x2.svg
new file mode 100644
index 0000000..98c4486
--- /dev/null
+++ b/symbols/shields/trunk_1x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='18' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='12.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_1x3.svg b/symbols/shields/trunk_1x3.svg
new file mode 100644
index 0000000..3c68953
--- /dev/null
+++ b/symbols/shields/trunk_1x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='18' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='12.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_1x4.svg b/symbols/shields/trunk_1x4.svg
new file mode 100644
index 0000000..e56905f
--- /dev/null
+++ b/symbols/shields/trunk_1x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 19.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='18' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='15.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='12.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_2x1.svg b/symbols/shields/trunk_2x1.svg
new file mode 100644
index 0000000..0b66150
--- /dev/null
+++ b/symbols/shields/trunk_2x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='25.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='19.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_2x2.svg b/symbols/shields/trunk_2x2.svg
new file mode 100644
index 0000000..c2b60ae
--- /dev/null
+++ b/symbols/shields/trunk_2x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='25.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='19.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_2x3.svg b/symbols/shields/trunk_2x3.svg
new file mode 100644
index 0000000..d24f803
--- /dev/null
+++ b/symbols/shields/trunk_2x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='25.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='19.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_2x4.svg b/symbols/shields/trunk_2x4.svg
new file mode 100644
index 0000000..422f2dd
--- /dev/null
+++ b/symbols/shields/trunk_2x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 26.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='25.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='22.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='19.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_3x1.svg b/symbols/shields/trunk_3x1.svg
new file mode 100644
index 0000000..801adcd
--- /dev/null
+++ b/symbols/shields/trunk_3x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='32.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='26.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_3x2.svg b/symbols/shields/trunk_3x2.svg
new file mode 100644
index 0000000..8bd3a5b
--- /dev/null
+++ b/symbols/shields/trunk_3x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='32.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='26.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_3x3.svg b/symbols/shields/trunk_3x3.svg
new file mode 100644
index 0000000..2ad03f3
--- /dev/null
+++ b/symbols/shields/trunk_3x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='32.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='26.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_3x4.svg b/symbols/shields/trunk_3x4.svg
new file mode 100644
index 0000000..ff6becb
--- /dev/null
+++ b/symbols/shields/trunk_3x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 33.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='32.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='29.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='26.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_4x1.svg b/symbols/shields/trunk_4x1.svg
new file mode 100644
index 0000000..b56d54c
--- /dev/null
+++ b/symbols/shields/trunk_4x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='39' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='33.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_4x2.svg b/symbols/shields/trunk_4x2.svg
new file mode 100644
index 0000000..68e4527
--- /dev/null
+++ b/symbols/shields/trunk_4x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='39' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='33.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_4x3.svg b/symbols/shields/trunk_4x3.svg
new file mode 100644
index 0000000..b1e899e
--- /dev/null
+++ b/symbols/shields/trunk_4x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='39' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='33.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_4x4.svg b/symbols/shields/trunk_4x4.svg
new file mode 100644
index 0000000..f330d27
--- /dev/null
+++ b/symbols/shields/trunk_4x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 40.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='39' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='36.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='33.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_5x1.svg b/symbols/shields/trunk_5x1.svg
new file mode 100644
index 0000000..5765608
--- /dev/null
+++ b/symbols/shields/trunk_5x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='46' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='40.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_5x2.svg b/symbols/shields/trunk_5x2.svg
new file mode 100644
index 0000000..6ef419d
--- /dev/null
+++ b/symbols/shields/trunk_5x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='46' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='40.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_5x3.svg b/symbols/shields/trunk_5x3.svg
new file mode 100644
index 0000000..b41feab
--- /dev/null
+++ b/symbols/shields/trunk_5x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='46' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='40.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_5x4.svg b/symbols/shields/trunk_5x4.svg
new file mode 100644
index 0000000..eb416b4
--- /dev/null
+++ b/symbols/shields/trunk_5x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 47.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='46' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='43.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='40.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_6x1.svg b/symbols/shields/trunk_6x1.svg
new file mode 100644
index 0000000..b65e29d
--- /dev/null
+++ b/symbols/shields/trunk_6x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='52.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='46.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_6x2.svg b/symbols/shields/trunk_6x2.svg
new file mode 100644
index 0000000..56a00cc
--- /dev/null
+++ b/symbols/shields/trunk_6x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='52.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='46.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_6x3.svg b/symbols/shields/trunk_6x3.svg
new file mode 100644
index 0000000..b325319
--- /dev/null
+++ b/symbols/shields/trunk_6x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='52.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='46.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_6x4.svg b/symbols/shields/trunk_6x4.svg
new file mode 100644
index 0000000..0b8e3f0
--- /dev/null
+++ b/symbols/shields/trunk_6x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 53.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='52.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='49.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='46.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_7x1.svg b/symbols/shields/trunk_7x1.svg
new file mode 100644
index 0000000..fe0a215
--- /dev/null
+++ b/symbols/shields/trunk_7x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 19.75'>
+<rect x='1.25' y='1.75' height='18' width='59.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='53.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_7x2.svg b/symbols/shields/trunk_7x2.svg
new file mode 100644
index 0000000..cae79f3
--- /dev/null
+++ b/symbols/shields/trunk_7x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 31.75'>
+<rect x='1.25' y='1.75' height='30' width='59.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='53.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_7x3.svg b/symbols/shields/trunk_7x3.svg
new file mode 100644
index 0000000..b68c257
--- /dev/null
+++ b/symbols/shields/trunk_7x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 45.75'>
+<rect x='1.25' y='1.75' height='44' width='59.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='53.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_7x4.svg b/symbols/shields/trunk_7x4.svg
new file mode 100644
index 0000000..e98e374
--- /dev/null
+++ b/symbols/shields/trunk_7x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 60.50 55.75'>
+<rect x='1.25' y='1.75' height='54' width='59.25' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='56.25' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='53.25' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_8x1.svg b/symbols/shields/trunk_8x1.svg
new file mode 100644
index 0000000..fe6a8f0
--- /dev/null
+++ b/symbols/shields/trunk_8x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 19.75'>
+<rect x='1.25' y='1.75' height='18' width='66' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='60.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_8x2.svg b/symbols/shields/trunk_8x2.svg
new file mode 100644
index 0000000..225b563
--- /dev/null
+++ b/symbols/shields/trunk_8x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 31.75'>
+<rect x='1.25' y='1.75' height='30' width='66' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='60.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_8x3.svg b/symbols/shields/trunk_8x3.svg
new file mode 100644
index 0000000..7ad16ac
--- /dev/null
+++ b/symbols/shields/trunk_8x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 45.75'>
+<rect x='1.25' y='1.75' height='44' width='66' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='60.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_8x4.svg b/symbols/shields/trunk_8x4.svg
new file mode 100644
index 0000000..d8e0137
--- /dev/null
+++ b/symbols/shields/trunk_8x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 67.25 55.75'>
+<rect x='1.25' y='1.75' height='54' width='66' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='63.0' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='60.0' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_9x1.svg b/symbols/shields/trunk_9x1.svg
new file mode 100644
index 0000000..80b5aba
--- /dev/null
+++ b/symbols/shields/trunk_9x1.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 19.75'>
+<rect x='1.25' y='1.75' height='18' width='70.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='15.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='12.0' width='64.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_9x2.svg b/symbols/shields/trunk_9x2.svg
new file mode 100644
index 0000000..f37cd34
--- /dev/null
+++ b/symbols/shields/trunk_9x2.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 31.75'>
+<rect x='1.25' y='1.75' height='30' width='70.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='27.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='24.0' width='64.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_9x3.svg b/symbols/shields/trunk_9x3.svg
new file mode 100644
index 0000000..c2202e4
--- /dev/null
+++ b/symbols/shields/trunk_9x3.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 45.75'>
+<rect x='1.25' y='1.75' height='44' width='70.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='41.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='38.0' width='64.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shields/trunk_9x4.svg b/symbols/shields/trunk_9x4.svg
new file mode 100644
index 0000000..648e6d5
--- /dev/null
+++ b/symbols/shields/trunk_9x4.svg
@@ -0,0 +1,5 @@
+<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 71.75 55.75'>
+<rect x='1.25' y='1.75' height='54' width='70.5' rx='9' fill='#87ab87'/>
+<rect x='2.75' y='3.25' height='51.0' width='67.5' rx='7.5' fill='white'/>
+<rect x='4.25' y='4.75' height='48.0' width='64.5' rx='6.0' fill='#87ab87'/>
+</svg>
diff --git a/symbols/shinto.png b/symbols/shinto.png
deleted file mode 100644
index 6ac47f8..0000000
Binary files a/symbols/shinto.png and /dev/null differ
diff --git a/symbols/shintoist.16.svg b/symbols/shintoist.16.svg
new file mode 100644
index 0000000..c2ac884
--- /dev/null
+++ b/symbols/shintoist.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 1,1 c 0,1 0.6545446,1.654855 1,2 0.3454553,0.345145 0.8426782,0.2121799 0.8426782,0.4724826 0,0 0.1573217,0.5275173 0.6573217,0.5275173 l 1.2500001,0 c 0,0.2876366 0.2500001,0.5 0.2500001,0.5 0,0 -0.2500001,0.1404543 -0.2500001,0.5000002 l -1.2500001,0 c -0.5,0 -0.5,0.2499999 -0.5,0.5 0,0.5273339 0,0.9999999 0,0.9999999 0,0.2396973 0.2311002,0.5 0.5,0.5 0.2689,0 1.2500003,0 1.2500001,0 l 0,1 -0.7499999,0 c 0,0.4060258 0.2706055,0.7315864 0.7499999,0.9999999 0,0.3163531 0,5.5000 [...]
+</svg>
diff --git a/symbols/shop_bakery.16.svg b/symbols/shop_bakery.16.svg
new file mode 100644
index 0000000..852e0ec
--- /dev/null
+++ b/symbols/shop_bakery.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 7.75,4 9.25,8 7.75,8 6.25,4 C 6.25,4 4.4948328,4 4.5,4 L 6,8 4.5,8 3.1769068,4.5762712 C 2.2910439,5.2640693 1,7.1983848 1,9 l 0,2 c 0,0.59322 0.4237288,1 1,1 l 12,0 c 0.576271,0 1,-0.423729 1,-1 L 15,9 C 15,6.5355945 13.272623,4.5853602 11,4 L 12.5,8 11,8 9.5,4 c 0,0 -1.743955,0 -1.75,0 z" />
+</svg>
diff --git a/symbols/shop_bakery.p.16.png b/symbols/shop_bakery.p.16.png
deleted file mode 100644
index 89de12e..0000000
Binary files a/symbols/shop_bakery.p.16.png and /dev/null differ
diff --git a/symbols/shop_books.16.svg b/symbols/shop_books.16.svg
new file mode 100644
index 0000000..3128c51
--- /dev/null
+++ b/symbols/shop_books.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 3,1 C 1.4915254,1 1,2 1,3 1.02381,4 1.5423729,5 3,5 L 13,5 12,4 3,4 C 2,4 2,3 2,3 2,3 2,2 3,2 L 12,2 13,1 3,1 z m 0,1.75 0,0.5 9,0 0,-0.5 -9,0 z M 5,6 C 3.4915254,6 3,7 3,8 3.02381,9 3.5423729,10 5,10 L 15,10 14,9 5,9 C 4,9 4,8 4,8 4,8 4,7 5,7 L 14,7 15,6 5,6 z m 0,1.75 0,0.5 9,0 0,-0.5 -9,0 z M 3,11 c -1.5084746,0 -2,1 -2,2 0.02381,1 0.5423729,2 2,2 l 10,0 -1,-1 -9,0 C 2,14 2,13 2,13 2,13 2,12 3,12 l 9,0 1,-1 -10,0 z m 0,1.75 0,0.5 9,0 0,-0.5 -9,0 z" />
+</svg>
diff --git a/symbols/shop_car.svg b/symbols/shop_car.svg
new file mode 100644
index 0000000..7c5a319
--- /dev/null
+++ b/symbols/shop_car.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="0 1 14 12">
+<path fill-rule="evenodd" id="body" d="M 0,9.5 A 1.5,1.5 0 0,0 1.5,11 L 12.5,11 A 1.5,1.5 0 0,0 14,9.5 L 14,6.5 A 1.5,1.5 0 0,0 12.5,5 L 1.5,5 A 1.5,1.5 0 0,0 0,6.5 Z
+M 1.6,7.5 a .9,.9 0 1,1 0,0.01 Z
+M 10.6,7.5 a .9,.9 0 1,1 0,0.01 Z"/>
+<g id="tyres">
+<rect x="1" y="10" width="2" height="3"/>
+<rect x="11" y="10" width="2" height="3"/>
+</g>
+<path id="top" d="M 2,5 L 2,2.5 A 1.5,1.5 0 0,1 3.5,1 L 10.5,1 A 1.5,1.5 0 0,1 12,2.5 L 12,5
+10.5,5 10.5,3.5 A 1,1 0 0,0 9.5,2.5 L 4.5,2.5 A 1,1 0 0,0 3.5,3.5 L 3.5,5 Z" />
+</svg>
diff --git a/symbols/shop_clothes.p.16.png b/symbols/shop_clothes.p.16.png
deleted file mode 100644
index b028a1c..0000000
Binary files a/symbols/shop_clothes.p.16.png and /dev/null differ
diff --git a/symbols/shop_clothes.svg b/symbols/shop_clothes.svg
new file mode 100644
index 0000000..57ca70d
--- /dev/null
+++ b/symbols/shop_clothes.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 11 11">
+<path d="M 0,2 L 5,0 7,0 12,2 11,5 9,4.2 9,10.5 A 10,10 0 0,1 3,10.5 L 3,4.2 1,5"/>
+</svg>
diff --git a/symbols/shop_convenience.p.16.png b/symbols/shop_convenience.p.16.png
deleted file mode 100644
index 2fc7584..0000000
Binary files a/symbols/shop_convenience.p.16.png and /dev/null differ
diff --git a/symbols/shop_convenience.svg b/symbols/shop_convenience.svg
new file mode 100644
index 0000000..70105a4
--- /dev/null
+++ b/symbols/shop_convenience.svg
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 13 11">
+<g id="hbars">
+<rect x="1" y="6" width="11" height="0.5" />
+<rect x="2" y="8" width="9.5" height="0.5" />
+</g>
+<g id="vbars">
+<rect x="3" y="4.5" width="0.5" height="5.5" />
+<rect x="5" y="4.5" width="0.5" height="5.5" />
+<rect x="7.5" y="4.5" width="0.5" height="5.5" />
+<rect x="9.5" y="4.5" width="0.5" height="5.5" />
+</g>
+<path id="handle" d="M5.9,4 L7.9,1 A 0.5,0.5 0 0,1 8.83,1.4 L 7.1,4 Z"/>
+<path id="body" fill-rule="evenodd" d="M 0,4 L 13,4 11,11 2,11 Z
+M 1.25,5 L 11.75,5 10.25,10 2.75,10 Z"/>
+</svg>
diff --git a/symbols/shop_hairdresser.16.svg b/symbols/shop_hairdresser.16.svg
new file mode 100644
index 0000000..e2ad7af
--- /dev/null
+++ b/symbols/shop_hairdresser.16.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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></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,1 0,9.53125 C 4.580263,10.212414 4.064535,10 3.5,10 2.12521,10 1,11.12521 1,12.5 1,13.87479 2.12521,15 3.5,15 4.702941,15 5.703332,14.136374 5.9375,13 l 0.125,0 C 6.296668,14.136374 7.297059,15 8.5,15 9.87479,15 11,13.87479 11,12.5 11,11.12521 9.87479,10 8.5,10 7.935465,10 7.419737,10.212414 7,10.53125 L 7,1 z m 4,0 0,2 4,0 0,1 -4,0 0,1 4,0 0,1 -4,0 0,1 4,0 0,1 -4,0 0,1 4,0 0,6 2,0 0,-12 C 15,2 14,1 13,1 z M 3.5,11 C 4.334349,11 5,11.665651 5,12.5 5,13.334349 4.334349,14 3.5, [...]
+     id="hairdresser"
+     style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/shop_hairdresser.p.16.png b/symbols/shop_hairdresser.p.16.png
deleted file mode 100644
index aa783f2..0000000
Binary files a/symbols/shop_hairdresser.p.16.png and /dev/null differ
diff --git a/symbols/shop_pet.16.svg b/symbols/shop_pet.16.svg
new file mode 100644
index 0000000..254015a
--- /dev/null
+++ b/symbols/shop_pet.16.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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></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 10.412959,1.002152 C 9.1693111,1.14588 8.4631991,2.5093562 8.3733471,3.6936526 8.2264421,4.7464946 8.6860601,6.0899485 9.7918901,6.3320386 10.750208,6.4175146 11.512633,5.517193 11.825819,4.6583655 12.195679,3.583391 12.206482,2.1478454 11.309038,1.3425072 11.059753,1.1264712 10.739671,0.99523614 10.412959,1.002152 z M 5.3400251,1.058519 c -1.034807,0.074858 -1.5652,1.2774426 -1.493223,2.2427639 0.0088,1.2907239 0.717612,2.7424122 2.010186,3.0488129 0.963956,0.1042448 1.606661, [...]
+     id="pet"
+     style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/shop_supermarket.p.16.png b/symbols/shop_supermarket.p.16.png
deleted file mode 100644
index 3b4338a..0000000
Binary files a/symbols/shop_supermarket.p.16.png and /dev/null differ
diff --git a/symbols/shop_supermarket.svg b/symbols/shop_supermarket.svg
new file mode 100644
index 0000000..5f534ce
--- /dev/null
+++ b/symbols/shop_supermarket.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 14 13">
+<g id="vbars">
+<rect x="3.5" y="2.5" width="0.5" height="5" />
+<rect x="5.5" y="2.5" width="0.5" height="5.5" />
+<rect x="7.5" y="2.5" width="0.5" height="6" />
+<rect x="9.5" y="2.5" width="0.5" height="6" />
+</g>
+<g id="hbars">
+<rect x="1" y="4" width="10.5" height="0.5" />
+<rect x="1" y="6" width="10.5" height="0.5" />
+</g>
+<g id="wheels">
+<circle cx="9.5" cy="11.2" r="1" />
+<circle cx="3.5" cy="11.2" r="1" />
+</g>
+<path id="base" d="M 11,9 L 11,11 1.5,11 A 0.5,0.5 0 1,1 1.5,10 L 10,10 10,8.5 Z"/>
+<path id="handle" d="M 11.5,2 L 11.768,.75 13.25,0.2 A 0.5,0.5 0 0,1 13.6,1.25 L 12.6,1.6 12.5,2"/>
+<path id="body" fill-rule="evenodd" d="M 0,2 L 12.5,2 11,9 1,8 M 1.167,3 L 11.286,3 10.25,7.9 1.9,7.1 Z"/>
+</svg>
diff --git a/symbols/shopping_car.p.16.png b/symbols/shopping_car.p.16.png
deleted file mode 100644
index e34715b..0000000
Binary files a/symbols/shopping_car.p.16.png and /dev/null differ
diff --git a/symbols/shopping_car_repair.16.svg b/symbols/shopping_car_repair.16.svg
new file mode 100644
index 0000000..f2224d9
--- /dev/null
+++ b/symbols/shopping_car_repair.16.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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></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 11.5,1 C 10.574658,1 9.776015,1.502762 9.34375,2.25 L 3.5,2.25 C 2.622246,2.25 2,2.7711864 2,3.5 2,4.2288136 2.603432,4.75 3.5,4.75 l 5.84375,0 C 9.776015,5.4972377 10.574658,6 11.5,6 12.425343,6 13.223985,5.4972377 13.65625,4.75 L 12,4.75 10.5,3.5 12,2.25 l 1.65625,0 C 13.223985,1.5027623 12.425343,1 11.5,1 z m -8,2 C 3.776142,3 4,3.2238576 4,3.5 4,3.7761424 3.776142,4 3.5,4 3.223858,4 3,3.7761424 3,3.5 3,3.2238576 3.223858,3 3.5,3 z M 5,7 4,10 c -0.472666,0 -1,0.384295 -1,1 l [...]
+     id="repair-car"
+     style="fill:#1a1a1a;stroke:none" />
+</svg>
diff --git a/symbols/shopping_car_repair.p.16.png b/symbols/shopping_car_repair.p.16.png
deleted file mode 100644
index 9c38777..0000000
Binary files a/symbols/shopping_car_repair.p.16.png and /dev/null differ
diff --git a/symbols/sikh.png b/symbols/sikh.png
deleted file mode 100644
index a3ade80..0000000
Binary files a/symbols/sikh.png and /dev/null differ
diff --git a/symbols/sikh3.p.16.png b/symbols/sikh3.p.16.png
deleted file mode 100644
index 9e8906e..0000000
Binary files a/symbols/sikh3.p.16.png and /dev/null differ
diff --git a/symbols/sikhist.16.svg b/symbols/sikhist.16.svg
new file mode 100644
index 0000000..6818072
--- /dev/null
+++ b/symbols/sikhist.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 7.9843342,1 6.9817232,2 C 7.044285,2.4367914 7.0601031,2.7749535 7.1070496,3.15625 5.8826554,3.5360844 4.9765013,4.653806 4.9765013,6 c 0,1.3565494 0.9229007,2.4727975 2.1618799,2.84375 C 7.0873598,9.2198537 7.0530306,9.5732699 6.9817232,10 l 0.5013055,0.5 0,0.40625 C 6.5614039,10.285538 5.5815135,9.5952456 4.9765013,9 2.9436865,7 3.4803233,3.5 5.9791123,2 3.9800811,2.5 2,4.3084098 2,7 c 0,2.9999999 2.9765013,4 2.9765013,5 l 1.002611,-1 1.2845953,0.71875 C 6.6495383,12.098319 5 [...]
+</svg>
diff --git a/symbols/spring.png b/symbols/spring.png
deleted file mode 100644
index c2dceb4..0000000
Binary files a/symbols/spring.png and /dev/null differ
diff --git a/symbols/spring.svg b/symbols/spring.svg
new file mode 100644
index 0000000..bab09a9
--- /dev/null
+++ b/symbols/spring.svg
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="5"
+   height="7">
+	<rect width="5" height="7" fill="white" />
+	<path d="M 4,1 1,1 1,4 3,4 3,5 1,5 1,6 4,6 4,3 2,3 2,2 4,2 4,1 z" fill="#588499" />
+</svg>
diff --git a/symbols/square.svg b/symbols/square.svg
new file mode 100644
index 0000000..e654639
--- /dev/null
+++ b/symbols/square.svg
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="1"
+   height="1">
+	<path d="M 0,0 0,1 1,1 1,0 z" />
+</svg>
diff --git a/symbols/station.png b/symbols/station.png
deleted file mode 100644
index 686ec10..0000000
Binary files a/symbols/station.png and /dev/null differ
diff --git a/symbols/station_disused.png b/symbols/station_disused.png
deleted file mode 100644
index 73be6f1..0000000
Binary files a/symbols/station_disused.png and /dev/null differ
diff --git a/symbols/station_small.png b/symbols/station_small.png
deleted file mode 100644
index d8e75f5..0000000
Binary files a/symbols/station_small.png and /dev/null differ
diff --git a/symbols/synagogue.png b/symbols/synagogue.png
deleted file mode 100644
index 66ec7f1..0000000
Binary files a/symbols/synagogue.png and /dev/null differ
diff --git a/symbols/taoist.16.svg b/symbols/taoist.16.svg
new file mode 100644
index 0000000..50ad202
--- /dev/null
+++ b/symbols/taoist.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 8,15 c 3.858078,0 7,-3.169117 7,-7 C 15,4.169117 11.877274,1 8,1 4.122726,1 1,4.13993 1,8 c 0,3.860071 3.141922,7 7,7 z M 8,14 C 4.680369,14 2,11.319631 2,8 2,4.680369 4.680369,2 8,2 c 3,0 4,5.4793944 0,6 -4,0.5206056 -2.915254,6 0,6 z m 0,-2 c -0.5522848,0 -1,-0.447716 -1,-1 0,-0.552284 0.4477152,-1 1,-1 0.5522848,0 1,0.447716 1,1 0,0.552284 -0.4477152,1 -1,1 z M 8,6 C 8.5522847,6 9,5.552285 9,5 9,4.447715 8.5522847,4 8,4 7.4477153,4 7,4.447715 7,5 7,5.552285 7.4477153,6 8,6 z" />
+</svg>
diff --git a/symbols/taoist.png b/symbols/taoist.png
deleted file mode 100644
index 39070d0..0000000
Binary files a/symbols/taoist.png and /dev/null differ
diff --git a/symbols/ter_shield1.png b/symbols/ter_shield1.png
deleted file mode 100644
index 9fad535..0000000
Binary files a/symbols/ter_shield1.png and /dev/null differ
diff --git a/symbols/ter_shield2.png b/symbols/ter_shield2.png
deleted file mode 100644
index 3092a89..0000000
Binary files a/symbols/ter_shield2.png and /dev/null differ
diff --git a/symbols/ter_shield3.png b/symbols/ter_shield3.png
deleted file mode 100644
index 0d42f6c..0000000
Binary files a/symbols/ter_shield3.png and /dev/null differ
diff --git a/symbols/ter_shield4.png b/symbols/ter_shield4.png
deleted file mode 100644
index c30bb9a..0000000
Binary files a/symbols/ter_shield4.png and /dev/null differ
diff --git a/symbols/ter_shield5.png b/symbols/ter_shield5.png
deleted file mode 100644
index 5bfbf4e..0000000
Binary files a/symbols/ter_shield5.png and /dev/null differ
diff --git a/symbols/ter_shield6.png b/symbols/ter_shield6.png
deleted file mode 100644
index 4561fb1..0000000
Binary files a/symbols/ter_shield6.png and /dev/null differ
diff --git a/symbols/ter_shield7.png b/symbols/ter_shield7.png
deleted file mode 100644
index 80b4a16..0000000
Binary files a/symbols/ter_shield7.png and /dev/null differ
diff --git a/symbols/ter_shield8.png b/symbols/ter_shield8.png
deleted file mode 100644
index a1eed49..0000000
Binary files a/symbols/ter_shield8.png and /dev/null differ
diff --git a/symbols/tertiary_shield1.png b/symbols/tertiary_shield1.png
deleted file mode 100644
index 0ba9015..0000000
Binary files a/symbols/tertiary_shield1.png and /dev/null differ
diff --git a/symbols/tertiary_shield2.png b/symbols/tertiary_shield2.png
deleted file mode 100644
index 4952fe7..0000000
Binary files a/symbols/tertiary_shield2.png and /dev/null differ
diff --git a/symbols/tertiary_shield3.png b/symbols/tertiary_shield3.png
deleted file mode 100644
index 4e7233c..0000000
Binary files a/symbols/tertiary_shield3.png and /dev/null differ
diff --git a/symbols/tertiary_shield4.png b/symbols/tertiary_shield4.png
deleted file mode 100644
index b5ddee2..0000000
Binary files a/symbols/tertiary_shield4.png and /dev/null differ
diff --git a/symbols/tertiary_shield5.png b/symbols/tertiary_shield5.png
deleted file mode 100644
index 1c16176..0000000
Binary files a/symbols/tertiary_shield5.png and /dev/null differ
diff --git a/symbols/tertiary_shield6.png b/symbols/tertiary_shield6.png
deleted file mode 100644
index 87b8dad..0000000
Binary files a/symbols/tertiary_shield6.png and /dev/null differ
diff --git a/symbols/tertiary_shield7.png b/symbols/tertiary_shield7.png
deleted file mode 100644
index 8f3c4c5..0000000
Binary files a/symbols/tertiary_shield7.png and /dev/null differ
diff --git a/symbols/tertiary_shield8.png b/symbols/tertiary_shield8.png
deleted file mode 100644
index ace8d21..0000000
Binary files a/symbols/tertiary_shield8.png and /dev/null differ
diff --git a/symbols/theatre.16.svg b/symbols/theatre.16.svg
new file mode 100644
index 0000000..9cf15fd
--- /dev/null
+++ b/symbols/theatre.16.svg
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://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></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 1,1 0,7 c 0,0 0,4 4,4 0.4876943,0 0.9052288,-0.08308 1.28125,-0.1875 C 6.222862,11.329209 6.25,11 6.25,11 l 0,-0.21875 C 5.9069891,10.915179 5.4900129,11 5,11 2,11 2,8 2,8 L 2,2.5 c 2,0.9520605 4,0.9520605 6,0 L 8,3.65625 C 8.3344864,3.7893793 8.6766322,3.9137483 9,4 L 9,1 C 6,2.3728814 4,2.3050847 1,1 z m 2.5,3 c -0.5522847,0 -1,0.4477153 -1,1 0,0.5522847 0.4477153,1 1,1 0.5522847,0 1,-0.4477153 1,-1 0,-0.5522847 -0.4477153,-1 -1,-1 z M 7,4 7,11 c 0,0 0,4 4,4 4,0 4,-4 4,-4 L 1 [...]
+     id="theatre"
+     style="fill:#1a1a1a;fill-opacity:1;stroke:none" />
+</svg>
diff --git a/symbols/theatre.p.20.png b/symbols/theatre.p.20.png
deleted file mode 100644
index 36b918c..0000000
Binary files a/symbols/theatre.p.20.png and /dev/null differ
diff --git a/symbols/toilets.16.svg b/symbols/toilets.16.svg
new file mode 100644
index 0000000..ac0b5ae
--- /dev/null
+++ b/symbols/toilets.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="m 7.25,1 0,14 1.5,0 0,-14 -1.5,0 z M 3.5,2 C 2.6715729,2 2,2.6715729 2,3.5 2,4.3284271 2.6715729,5 3.5,5 4.3284271,5 5,4.3284271 5,3.5 5,2.6715729 4.3284271,2 3.5,2 z m 9,0 C 11.671573,2 11,2.6715729 11,3.5 11,4.3284271 11.671573,5 12.5,5 13.328427,5 14,4.3284271 14,3.5 14,2.6715729 13.328427,2 12.5,2 z m -10,4 c -0.5997222,0 -1,0.568545 -1,1 0,0.5273339 1.25,1.4966359 1.25,2 C 2.75,9.5559735 1,10 1,12 l 1.75,0 0,3 1.5,0 0,-3 L 6,12 C 6,10 4.25,9.5295085 4.25,9 4.25,8.4704915 5.5 [...]
+</svg>
diff --git a/symbols/toilets.p.20.png b/symbols/toilets.p.20.png
deleted file mode 100644
index 80cf3af..0000000
Binary files a/symbols/toilets.p.20.png and /dev/null differ
diff --git a/symbols/tourist_memorial.16.svg b/symbols/tourist_memorial.16.svg
new file mode 100644
index 0000000..8cb8b49
--- /dev/null
+++ b/symbols/tourist_memorial.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 6,2 C 5,2 4,3 4,4 l 0,8 8,0 0,-8 C 12,3 11,2 10,2 z M 7,4 9,4 9,5 7,5 z m -2,2 6,0 0,1 -6,0 z m 1,2 4,0 0,1 -4,0 z m -3,5 -1,1 0,1 12,0 0,-1 -1,-1 z" />
+</svg>
diff --git a/symbols/tourist_memorial.p.20.png b/symbols/tourist_memorial.p.20.png
deleted file mode 100644
index 7fa8361..0000000
Binary files a/symbols/tourist_memorial.p.20.png and /dev/null differ
diff --git a/symbols/tower.png b/symbols/tower.png
deleted file mode 100644
index 304727a..0000000
Binary files a/symbols/tower.png and /dev/null differ
diff --git a/symbols/town_hall.16.svg b/symbols/town_hall.16.svg
new file mode 100644
index 0000000..358fba9
--- /dev/null
+++ b/symbols/town_hall.16.svg
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="100%"
+   height="100%"
+   viewBox="0 0 16 16">
+  <path
+     d="M 8,1 C 7.75,1.0032 7.5,1.1644239 7.5,1.5 L 7.5,5.375 2,8 14,8 8.5,5.375 8.5,1.5 C 8.5,1.1516409 8.25,0.99680426 8,1 z M 9,1 9,4 13,4 11,2.5 13,1 z m -7,8 0,1 1,0 0,4 -1,0 0,1 12,0 0,-1 -1,0 0,-4 1,0 0,-1 z m 6,1.5 c 1,0 2,0.5 2,1.5 l 0,2 -4,0 0,-2 c 0,-1 1,-1.5 2,-1.5 z" />
+</svg>
diff --git a/symbols/traffic_light.png b/symbols/traffic_light.png
deleted file mode 100644
index 1c2b3ca..0000000
Binary files a/symbols/traffic_light.png and /dev/null differ
diff --git a/symbols/traffic_light.svg b/symbols/traffic_light.svg
new file mode 100644
index 0000000..664dd92
--- /dev/null
+++ b/symbols/traffic_light.svg
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+
+<svg xmlns="http://www.w3.org/2000/svg"
+   version="1.1"
+   width="16"
+   height="16">
+	<path d="M 5,3 5,13 C 5,17 11,17 11,13 L 11,3 C 11,-1 5,-1 5,3 z
+	M 8,1 C 9.1,1 10,1.9 10,3 10,4.1 9.1,5 8,5 6.9,5 6,4.1 6,3 6,1.9 6.9,1 8,1 z
+	M 8,6 C 9.1,6 10,6.9 10,8 10,9.1 9.1,10 8,10 6.9,10 6,9.1 6,8 6,6.9 6.9,6 8,6 z
+	M 8,11 C 9.1,11 10,11.9 10,13 10,14.1 9.1,15 8,15 6.9,15 6,14.1 6,13 6,11.9 6.9,11 8,11 z" />
+</svg>
diff --git a/symbols/tree.png b/symbols/tree.png
deleted file mode 100644
index 7575bd6..0000000
Binary files a/symbols/tree.png and /dev/null differ
diff --git a/symbols/tree2.png b/symbols/tree2.png
deleted file mode 100644
index f0e3e1f..0000000
Binary files a/symbols/tree2.png and /dev/null differ
diff --git a/symbols/tru_shield1.png b/symbols/tru_shield1.png
deleted file mode 100644
index bbdd6fc..0000000
Binary files a/symbols/tru_shield1.png and /dev/null differ
diff --git a/symbols/tru_shield2.png b/symbols/tru_shield2.png
deleted file mode 100644
index e33d296..0000000
Binary files a/symbols/tru_shield2.png and /dev/null differ
diff --git a/symbols/tru_shield3.png b/symbols/tru_shield3.png
deleted file mode 100644
index 1a47f9a..0000000
Binary files a/symbols/tru_shield3.png and /dev/null differ
diff --git a/symbols/tru_shield4.png b/symbols/tru_shield4.png
deleted file mode 100644
index 443c3f3..0000000
Binary files a/symbols/tru_shield4.png and /dev/null differ
diff --git a/symbols/tru_shield5.png b/symbols/tru_shield5.png
deleted file mode 100644
index f53720b..0000000
Binary files a/symbols/tru_shield5.png and /dev/null differ
diff --git a/symbols/tru_shield6.png b/symbols/tru_shield6.png
deleted file mode 100644
index 092d0d9..0000000
Binary files a/symbols/tru_shield6.png and /dev/null differ
diff --git a/symbols/tru_shield7.png b/symbols/tru_shield7.png
deleted file mode 100644
index 49e9e03..0000000
Binary files a/symbols/tru_shield7.png and /dev/null differ
diff --git a/symbols/tru_shield8.png b/symbols/tru_shield8.png
deleted file mode 100644
index 587324a..0000000
Binary files a/symbols/tru_shield8.png and /dev/null differ
diff --git a/symbols/trunk_shield1.png b/symbols/trunk_shield1.png
deleted file mode 100644
index bb849c2..0000000
Binary files a/symbols/trunk_shield1.png and /dev/null differ
diff --git a/symbols/trunk_shield2.png b/symbols/trunk_shield2.png
deleted file mode 100644
index eb81d80..0000000
Binary files a/symbols/trunk_shield2.png and /dev/null differ
diff --git a/symbols/trunk_shield3.png b/symbols/trunk_shield3.png
deleted file mode 100644
index 4e6e976..0000000
Binary files a/symbols/trunk_shield3.png and /dev/null differ
diff --git a/symbols/trunk_shield4.png b/symbols/trunk_shield4.png
deleted file mode 100644
index 733d5d0..0000000
Binary files a/symbols/trunk_shield4.png and /dev/null differ
diff --git a/symbols/trunk_shield5.png b/symbols/trunk_shield5.png
deleted file mode 100644
index d6700e7..0000000
Binary files a/symbols/trunk_shield5.png and /dev/null differ
diff --git a/symbols/trunk_shield6.png b/symbols/trunk_shield6.png
deleted file mode 100644
index 053784e..0000000
Binary files a/symbols/trunk_shield6.png and /dev/null differ
diff --git a/symbols/trunk_shield7.png b/symbols/trunk_shield7.png
deleted file mode 100644
index 3d8a555..0000000
Binary files a/symbols/trunk_shield7.png and /dev/null differ
diff --git a/symbols/trunk_shield8.png b/symbols/trunk_shield8.png
deleted file mode 100644
index 3d8f1b1..0000000
Binary files a/symbols/trunk_shield8.png and /dev/null differ
diff --git a/symbols/vineyard.png b/symbols/vineyard.png
index 6498e3f..4e8ee2a 100644
Binary files a/symbols/vineyard.png and b/symbols/vineyard.png differ
diff --git a/symbols/volcano.png b/symbols/volcano.png
deleted file mode 100644
index a713ca3..0000000
Binary files a/symbols/volcano.png and /dev/null differ
diff --git a/symbols/water_park.p.20.png b/symbols/water_park.p.20.png
new file mode 100644
index 0000000..c38defa
Binary files /dev/null and b/symbols/water_park.p.20.png differ
diff --git a/symbols/wetland.png b/symbols/wetland.png
new file mode 100644
index 0000000..b1eac28
Binary files /dev/null and b/symbols/wetland.png differ
diff --git a/symbols/windmill.png b/symbols/windmill.png
index 17229f3..9ec568c 100644
Binary files a/symbols/windmill.png and b/symbols/windmill.png differ
diff --git a/symbols/zoo.png b/symbols/zoo.png
index ef7e65b..0697e69 100644
Binary files a/symbols/zoo.png and b/symbols/zoo.png differ
diff --git a/water-features.mss b/water-features.mss
index 0672373..0a79fcd 100644
--- a/water-features.mss
+++ b/water-features.mss
@@ -1,16 +1,93 @@
-#dam {
-  [zoom >= 13] {
-    line-width: 2;
-    line-color: #444;
-    line-join: round;
-    line-cap: round;
+ at breakwater-color: #aaa; /* Also for groyne */
+ at dam: #adadad;
+ at dam-line: #444444;
+ at weir-line: #aaa;
+ at lock-gate: #aaa;
+ at lock-gate-line: #aaa;
+
+#water-barriers-point, #water-barriers-line, #water-barriers-poly {
+  [waterway = 'dam'] {
+    #water-barriers-poly[zoom >= 13] {
+      line-width: 2;
+      line-color: @dam-line;
+      line-join: round;
+      line-cap: round;
+      polygon-fill: @dam;
+    }
+    #water-barriers-line[zoom >= 13] {
+      line-width: 2;
+      line-color: @dam-line;
+      line-join: round;
+      line-cap: round;
+    }
+    #water-barriers-point[zoom >= 17] {
+      marker-fill: @dam;
+      marker-line-color: @dam-line;
+      marker-line-width: 1;
+      marker-width: 8;
+      marker-height: 8;
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+    }
   }
-  [zoom >= 15] {
-    text-name: "[name]";
-    text-halo-radius: 1;
-    text-fill: #222;
-    text-size: 8;
-    text-face-name: @book-fonts;
+
+  [waterway = 'weir'] {
+    #water-barriers-line[zoom >= 13] {
+      line-color: @weir-line;
+      line-width: 2;
+      line-dasharray: 2,2;
+    }
+    #water-barriers-point[zoom >= 17] {
+      marker-fill: @water-color;
+      marker-line-color: @weir-line;
+      marker-line-width: 1;
+      marker-width: 8;
+      marker-height: 8;
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+    }
+  }
+
+  [waterway = 'lock_gate'] {
+    #water-barriers-line[zoom >= 13] {
+      line-color: @lock-gate-line;
+      line-width: 2;
+    }
+    #water-barriers-point[zoom >= 17] {
+      marker-fill: @lock-gate;
+      marker-line-width: 0;
+      marker-width: 8;
+      marker-height: 8;
+      marker-allow-overlap: true;
+      marker-ignore-placement: true;
+    }
+  }
+}
+
+#piers-poly, #piers-line {
+  [man_made = 'pier'][zoom >= 12] {
+    #piers-poly {
+      polygon-fill: @land-color;
+    }
+    #piers-line {
+      line-width: 1.5;
+      line-color: @land-color;
+      [zoom >= 13] { line-width: 3; }
+      [zoom >= 16] { line-width: 7; }
+    }
+  }
+
+  [man_made = 'breakwater'][zoom >= 12],
+  [man_made = 'groyne'][zoom >= 12] {
+    #piers-poly {
+      polygon-fill: @breakwater-color;
+    }
+    #piers-line {
+      line-width: 1;
+      line-color: @breakwater-color;
+      [zoom >= 13] { line-width: 2; }
+      [zoom >= 16] { line-width: 4; }
+    }
   }
 }
 
@@ -37,36 +114,49 @@
   }
 }
 
-#piers-area {
-  [zoom >= 12] {
-    polygon-fill: @land-color;
-  }
-}
-
-#piers {
-  [man_made = 'breakwater'],
-  [man_made = 'groyne'] {
-    [zoom >= 12] {
-      line-width: 1;
-      line-color: #aaa;
-    }
-    [zoom >= 13] {
-      line-width: 2;
-    }
-    [zoom >= 16] {
-      line-width: 4;
+.text {
+  [feature = 'waterway_dam'],
+  [feature = 'waterway_weir'] {
+    #text-poly[zoom >= 15],
+    #text-line[zoom >= 15],
+    #text-point[zoom >= 17] {
+      text-name: "[name]";
+      text-halo-radius: 1;
+      text-fill: #222;
+      text-size: 10;
+      text-face-name: @book-fonts;
+      #text-poly {
+        text-placement: interior;
+      }
+      #text-line {
+        text-placement: line;
+        text-dy: 8;
+        text-spacing: 400;
+      }
+      #text-point {
+        text-placement: point;
+        text-dy: 8;
+      }
     }
   }
-  [man_made = 'pier'][zoom >= 12] {
-    line-width: 1.5;
-    line-color: @land-color;
-    [zoom >= 13] { line-width: 3; }
-    [zoom >= 16] { line-width: 7; }
-  }
-}
 
-#locks {
-  [waterway = 'lock_gate'][zoom >= 17] {
-    point-file: url('symbols/lock_gate.png');
+  [feature = 'man_made_breakwater'][zoom >= 15],
+  [feature = 'man_made_groyne'][zoom >= 15],
+  [feature = 'man_made_pier'][zoom >= 15] {
+    #text-poly,
+    #text-line {
+      text-name: "[name]";
+      text-halo-radius: 1;
+      text-fill: #222;
+      text-size: 10;
+      text-face-name: @book-fonts;
+      #text-poly {
+        text-placement: interior;
+      }
+      #text-line {
+        text-placement: line;
+        text-spacing: 400;
+      }
+    }
   }
 }
diff --git a/water.mss b/water.mss
index d4ddfd7..217c2fe 100644
--- a/water.mss
+++ b/water.mss
@@ -1,79 +1,91 @@
 @water-text: #6699cc;
+ at glacier: #ddecec;
+ at glacier-line: #9cf;
+ at mud: #e6dcd1;
 
 #water-areas {
   [natural = 'glacier']::natural {
     [zoom >= 6] {
       line-dasharray: 4,2;
       line-width: 1.5;
-      line-color: #9cf;
-      polygon-pattern-file: url('symbols/glacier.png');
+      line-color: @glacier-line;
+      polygon-fill: @glacier;
       [zoom >= 8] {
-        polygon-pattern-file: url('symbols/glacier2.png');
+        polygon-pattern-file: url('symbols/glacier.png');
       }
     }
   }
 
   [waterway = 'dock'],
-  [waterway = 'mill_pond'],
   [waterway = 'canal'] {
     [zoom >= 9]::waterway {
-      polygon-gamma: 0.75;
       polygon-fill: @water-color;
+      [way_pixels >= 4] {
+        polygon-gamma: 0.75;
+      }
+      [way_pixels >= 64] {
+        polygon-gamma: 0.6;
+      }
     }
   }
 
   [landuse = 'basin'][zoom >= 7]::landuse {
-    polygon-gamma: 0.75;
     polygon-fill: @water-color;
+    [way_pixels >= 4] {
+      polygon-gamma: 0.75;
+    }
+    [way_pixels >= 64] {
+      polygon-gamma: 0.6;
+    }
   }
 
-  [natural = 'lake']::natural,
   [natural = 'water']::natural,
   [landuse = 'reservoir']::landuse,
-  [waterway = 'riverbank']::waterway,
-  [landuse = 'water']::water {
+  [waterway = 'riverbank']::waterway {
     [zoom >= 6] {
       polygon-fill: @water-color;
-      polygon-gamma: 0.75;
+      [way_pixels >= 4] {
+        polygon-gamma: 0.75;
+      }
+      [way_pixels >= 64] {
+        polygon-gamma: 0.6;
+      }
     }
   }
 
-  [natural = 'mud'][zoom >= 13]::natural {
+  [natural = 'mud'][zoom >= 10]::natural {
+    polygon-fill: @mud;
     polygon-pattern-file: url('symbols/mud.png');
+    polygon-pattern-alignment: global;
   }
 }
 
 #water-areas-overlay {
   [natural = 'marsh'],
   [natural = 'wetland'] {
-    [zoom >= 13] {
-      polygon-pattern-file: url('symbols/marsh.png');
+    [zoom >= 10] {
+      polygon-pattern-file: url('symbols/wetland.png');
     }
   }
 }
 
-#glaciers-text {
-  [way_area >= 10000000][zoom >= 10],
-  [way_area >= 5000000][way_area < 10000000][zoom >= 11],
-  [way_area < 5000000][zoom >= 12] {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #77f;
-    text-face-name: @oblique-fonts;
-    text-halo-radius: 1.5;
-    text-wrap-width: 20;
-  }
-}
-
 #water-lines-casing {
-  [waterway='stream'],
-  [waterway='ditch'],
-  [waterway='drain'] {
-    [zoom >= 13] {
-      line-width: 1.5;
-      line-color: white;
-      [waterway='stream'][zoom >= 15] {
+  [waterway = 'stream'],
+  [waterway = 'ditch'],
+  [waterway = 'drain'] {
+    [int_tunnel = 'no'] {
+      [zoom >= 13] {
         line-width: 2.5;
+        line-color: white;
+        [waterway = 'stream'][zoom >= 15] {
+          line-width: 3.5;
+        }
+        [intermittent = 'yes'] {
+          line-dasharray: 4,3;
+          line-cap: butt;
+          line-join: round;
+          line-clip: false;
+        }
       }
     }
   }
@@ -81,6 +93,12 @@
 
 #water-lines-low-zoom {
   [waterway = 'river'][zoom >= 8][zoom < 12] {
+    [intermittent = 'yes'] {
+      line-dasharray: 8,4;
+      line-cap: butt;
+      line-join: round;
+      line-clip: false;
+    }  
     line-color: @water-color;
     line-width: 0.7;
     [zoom >= 9] { line-width: 1.2; }
@@ -88,123 +106,95 @@
   }
 }
 
-#water-lines {
-  [waterway = 'weir'][zoom >= 15] {
-    line-color: #aaa;
-    line-width: 2;
-    line-join: round;
-    line-cap: round;
-  }
-
+.water-lines {
+  [waterway = 'canal'][zoom >= 12],
+  [waterway = 'river'][zoom >= 12],
   [waterway = 'wadi'][zoom >= 13] {
-    line-color: @water-color;
-    line-width: 1;
-    line-dasharray: 4,4;
-    line-cap: round;
-    line-join: round;
-    [zoom >= 16] { line-width: 2; }
-  }
-
-  [waterway = 'river'][zoom >= 12] {
-    line-color: @water-color;
-    line-width: 2;
-    line-cap: round;
-    line-join: round;
-    [zoom >= 13] {
-      line-width: 3;
-    }
-    [zoom >= 14] {
-      line-width: 5;
-    }
-    [zoom >= 15] {
-      line-width: 6;
-    }
-    [zoom >= 17] {
-      line-width: 10;
-    }
-    [zoom >= 18] {
-      line-width: 12;
-    }
-    [tunnel = 'yes'] {
+    [bridge = 'yes'] {
       [zoom >= 14] {
-        a/line-width: 6;
-        a/line-dasharray: 4,2;
-        a/line-color: @water-color;
-        b/line-width: 4;
-        b/line-color: white;
-      }
-      [zoom >= 15] {
-        a/line-width: 7;
+        bridgecasing/line-color: black;
+        bridgecasing/line-join: round;
+        bridgecasing/line-width: 6;
+        [zoom >= 15] { bridgecasing/line-width: 7; }
+        [zoom >= 17] { bridgecasing/line-width: 11; }
+        [zoom >= 18] { bridgecasing/line-width: 13; }
       }
-      [zoom >= 17] {
-        a/line-width: 11;
-        b/line-width: 7;
-      }
-      [zoom >= 18] {
-        a/line-width: 13;
-        b/line-width: 9;
+    }
+    [intermittent = 'yes'],
+    [waterway = 'wadi'] {
+      [bridge = 'yes'][zoom >= 14] {
+        bridgefill/line-color: white;
+        bridgefill/line-join: round;
+        bridgefill/line-width: 4;
+        [zoom >= 15] { bridgefill/line-width: 5; }
+        [zoom >= 17] { bridgefill/line-width: 9; }
+        [zoom >= 18] { bridgefill/line-width: 11; }
       }
+      line-dasharray: 4,3;
+      line-cap: butt;
+      line-join: round;
+      line-clip: false;
     }
-  }
-
-  [waterway = 'canal'][zoom >= 12][zoom < 14] {
     line-color: @water-color;
-    line-width: 3;
+    line-width: 2;
+    [zoom >= 13] { line-width: 3; }
+    [zoom >= 14] { line-width: 5; }
+    [zoom >= 15] { line-width: 6; }
+    [zoom >= 17] { line-width: 10; }
+    [zoom >= 18] { line-width: 12; }
     line-cap: round;
     line-join: round;
-    [zoom >= 13] {
-      line-width: 4;
+    [int_tunnel = 'yes'] {
+      line-dasharray: 4,2;
+      line-cap: butt;
+      line-join: miter;
+      a/line-color: #f3f7f7;
+      a/line-width: 1;
+      [zoom >= 14] { a/line-width: 2; }
+      [zoom >= 15] { a/line-width: 3; }
+      [zoom >= 17] { a/line-width: 7; }
+      [zoom >= 18] { a/line-width: 8; }
     }
   }
 
   [waterway = 'stream'],
   [waterway = 'ditch'],
   [waterway = 'drain'] {
-    [zoom >= 13][zoom < 15] {
-      line-width: 1;
-      line-color: @water-color;
-    }
-  }
-
-  [waterway = 'stream'][zoom >= 15] {
-    line-width: 2;
-    line-color: @water-color;
-    [tunnel = 'yes'] {
-      line-dasharray: 4,2;
-      line-width: 2.4;
-      a/line-width: 1.2;
-      a/line-color: #f3f7f7;
-    }
-  }
-
-  [waterway = 'drain'],
-  [waterway = 'ditch'] {
-    [zoom >= 15] {
-      line-width: 1;
+    [zoom >= 13] {
+      [bridge = 'yes'] {
+        [zoom >= 14] {
+          bridgecasing/line-color: black;
+          bridgecasing/line-join: round;
+          bridgecasing/line-width: 4;
+          [waterway = 'stream'][zoom >= 15] { bridgecasing/line-width: 4; }
+          bridgeglow/line-color: white;
+          bridgeglow/line-join: round;
+          bridgeglow/line-width: 3;
+          [waterway = 'stream'][zoom >= 15] { bridgeglow/line-width: 3; }
+        }
+      }
+      [intermittent = 'yes'] {
+        line-dasharray: 4,3;
+        line-cap: butt;
+        line-join: round;
+        line-clip: false;
+      }
+      line-width: 2;
       line-color: @water-color;
-      [tunnel = 'yes'] {
-        line-width: 2;
+      [waterway = 'stream'][zoom >= 15] {
+        line-width: 3;
+      }
+      [int_tunnel = 'yes'][zoom >= 15] {
+        line-width: 3.5;
+        [waterway = 'stream'] { line-width: 4.5; }
         line-dasharray: 4,2;
         a/line-width: 1;
+        [waterway = 'stream'] { a/line-width: 2; }
         a/line-color: #f3f7f7;
       }
     }
   }
 
-  [waterway = 'canal'][zoom >= 14] {
-    line-width: 7;
-    line-color: @water-color;
-    line-join: round;
-    line-cap: round;
-    [zoom >= 17] { line-width: 11; }
-    [tunnel = 'yes'] {
-      line-dasharray: 4,2;
-      b/line-width: 3;
-      b/line-color: white;
-      [zoom >= 17] { line-width: 7; }
-    }
-  }
-
   [waterway = 'derelict_canal'][zoom >= 12] {
     line-width: 1.5;
     line-color: #b5e4d0;
@@ -223,91 +213,79 @@
   }
 }
 
-#waterway-bridges {
-  [zoom >= 14] {
-    line-width: 7;
-    line-color: #000;
-    line-join: round;
-    b/line-width: 6;
-    b/line-color: @water-color;
-    b/line-cap: round;
-    b/line-join: round;
-    [zoom >= 17] {
-      line-width: 11;
-      b/line-width: 10;
-    }
-  }
-}
-
 #water-lines-text {
-  [waterway = 'river'][zoom >= 13] {
-    text-name: "[name]";
-    text-face-name: @oblique-fonts;
-    text-placement: line;
-    text-fill: @water-text;
-    text-spacing: 400;
-    text-size: 10;
-    text-halo-radius: 1;
-    [zoom >= 14] { text-size: 12; }
-    [tunnel = 'yes'] { text-min-distance: 200; }
-  }
-
-  [waterway = 'canal'][zoom >= 13][zoom < 14] {
-    text-name: "[name]";
-    text-face-name: @oblique-fonts;
-    text-halo-radius: 1;
-    text-size: 10;
-    text-placement: line;
-    text-fill: @water-text;
-  }
-
-  [waterway = 'stream'][zoom >= 15] {
-    text-name: "[name]";
-    text-size: 10;
-    text-face-name: @oblique-fonts;
-    text-fill: @water-text;
-    text-halo-radius: 1;
-    text-spacing: 600;
-    text-placement: line;
-    text-dy: 8;
-  }
+  [lock != 'yes'] {
+    [waterway = 'river'][zoom >= 13] {
+      text-name: "[name]";
+      text-face-name: @oblique-fonts;
+      text-placement: line;
+      text-fill: @water-text;
+      text-spacing: 400;
+      text-size: 10;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      [zoom >= 14] { text-size: 12; }
+      [int_tunnel = 'yes'] { text-min-distance: 200; }
+    }
 
-  [waterway = 'drain'],
-  [waterway = 'ditch'] {
-    [zoom >= 15] {
+    [waterway = 'canal'][zoom >= 13][zoom < 14] {
       text-name: "[name]";
       text-face-name: @oblique-fonts;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
       text-size: 10;
+      text-placement: line;
+      text-fill: @water-text;
+    }
+
+    [waterway = 'stream'][zoom >= 15] {
+      text-name: "[name]";
+      text-size: 10;
+      text-face-name: @oblique-fonts;
       text-fill: @water-text;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
       text-spacing: 600;
       text-placement: line;
-      text-halo-radius: 1;
+      text-dy: 8;
     }
-  }
 
-  [waterway = 'canal'][zoom >= 14] {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: @water-text;
-    text-placement: line;
-    text-face-name: @oblique-fonts;
-    text-halo-radius: 1;
-    [lock = 'yes'][zoom >= 17] {
-      text-placement: point;
-      text-wrap-width: 20;
+    [waterway = 'drain'],
+    [waterway = 'ditch'] {
+      [zoom >= 15] {
+        text-name: "[name]";
+        text-face-name: @oblique-fonts;
+        text-size: 10;
+        text-fill: @water-text;
+        text-spacing: 600;
+        text-placement: line;
+        text-halo-radius: 1;
+        text-halo-fill: rgba(255,255,255,0.6);
+      }
     }
-  }
 
-  [waterway = 'derelict_canal'][zoom >= 13] {
-    text-name: "[name]";
-    text-size: 10;
-    text-fill: #80d1ae;
-    text-face-name: @oblique-fonts;
-    text-placement: line;
-    text-spacing: 600;
-    text-halo-radius: 1;
-    [zoom >= 14] {
-      text-size: 12;
+    [waterway = 'canal'][zoom >= 14] {
+      text-name: "[name]";
+      text-size: 10;
+      text-fill: @water-text;
+      text-placement: line;
+      text-face-name: @oblique-fonts;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+    }
+
+    [waterway = 'derelict_canal'][zoom >= 13] {
+      text-name: "[name]";
+      text-size: 10;
+      text-fill: #80d1ae;
+      text-face-name: @oblique-fonts;
+      text-placement: line;
+      text-spacing: 600;
+      text-halo-radius: 1;
+      text-halo-fill: rgba(255,255,255,0.6);
+      [zoom >= 14] {
+        text-size: 12;
+      }
     }
   }
 }

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



More information about the Pkg-grass-devel mailing list