diff --git a/buildings-entrances.json b/buildings-entrances.json
new file mode 100644
index 0000000..513cef0
--- /dev/null
+++ b/buildings-entrances.json
@@ -0,0 +1,27 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Eingänge",
+        "en": "Entrances",
+        "fr": "Entrées",
+        "pt-br": "Acessos"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  node[entrance];",
+            "  node[building=entrance];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.entrance == 'yes' or (not tags.entrance and tags.building == 'entrance') %}",
+            "{{ keyTrans('entrance') }}",
+            "{% else %}",
+            "{{ tagTrans('entrance', tags.entrance) }}",
+            "{% endif %}"
+        ],
+        "styles": ""
+    }
+}
diff --git a/buildings-figure-ground.json b/buildings-figure-ground.json
new file mode 100644
index 0000000..72a3ae6
--- /dev/null
+++ b/buildings-figure-ground.json
@@ -0,0 +1,40 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Schwarzplan",
+        "en": "Figure-ground diagram",
+        "fr": "Empreintes",
+        "pt-br": "Cheios e vazios"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "markerSymbol": "",
+        "listMarkerSymbol": "{{ markerPolygon({fillColor: \"#000000\", fillOpacity: 1 })|raw }}",
+        "priority": [
+            "{% set p = 100 %}",
+            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
+            "{{ p }}"
+        ],
+        "style": {
+            "width": "0",
+            "color": "#000000",
+            "fillColor": "#000000",
+            "fillOpacity": "1"
+        }
+    }
+}
diff --git a/buildings-height.json b/buildings-height.json
new file mode 100644
index 0000000..6e3851a
--- /dev/null
+++ b/buildings-height.json
@@ -0,0 +1,106 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Gebäudehöhen",
+        "en": "Building height",
+        "fr": "Hauteur",
+        "pt-br": "Altura"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.height is defined %}",
+            "{% set approxHeight = tags.height %}",
+            "{% elseif attribute(tags, 'building:levels') is defined %}",
+            "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}",
+            "{% endif %}",
+            "",
+            "{% if approxHeight <= 50 %}",
+            "{% set color = colorInterpolate(['green', 'red'], approxHeight / 50) %}",
+            "{% elseif approxHeight %}",
+            "{% set color = colorInterpolate(['red', 'yellow'], (approxHeight - 50) / 250) %} ",
+            "{% else %}",
+            "{% set color = '#7f7f7f' %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if tags.height is defined %}",
+            "{{ tags.height }}m",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'building:levels') is defined %}",
+            "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
+        "priority": "{{ (approxHeight|default(0)) * -1 }}",
+        "style": {
+            "width": "1",
+            "color": "#000000",
+            "fillColor": "{{ color }}",
+            "fillOpacity": "1"
+        }
+    },
+    "info": [
+        "<div style='display: inline-block'>",
+        "{{ tagTrans('height') }}",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 50, 10) %}",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
+        "    <td>{{ i }}m</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "{% for i in range(100, 250, 50) %}",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": i }))|raw }}</td>",
+        "    <td>{{ i }}m</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"height\": \"300\" }))|raw }}</td>",
+        "    <td>≥300m</td>",
+        "  </tr>",
+        "</table>",
+        "</div>",
+        "",
+        "<div style='display: inline-block'>",
+        "{{ tagTrans('building:levels') }}",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 12, 3) %}",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
+        "    <td>{{ i }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "{% for i in range(15, 84, 15) %}",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": i }))|raw }}</td>",
+        "    <td>{{ i }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"building:levels\": \"85\" }))|raw }}</td>",
+        "    <td>≥85</td>",
+        "  </tr>",
+        "</table>",
+        "",
+        "</div>"
+    ]
+}
diff --git a/buildings-start_date.json b/buildings-start_date.json
new file mode 100644
index 0000000..d2c3ffe
--- /dev/null
+++ b/buildings-start_date.json
@@ -0,0 +1,131 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Gebäudealter",
+        "en": "Building age",
+        "fr": "Date de construction",
+        "pt-br": "Idade"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building];",
+            "  relation[building];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.start_date %}",
+            "  {% set value = tags.start_date|osmParseDate %}",
+            "  {% if value and value[0] and value[1] %}",
+            "    {% set value = (value[1] - value[0]) / 2 + value[0] %}",
+            "  {% elseif value and value[0] %}",
+            "    {% set value = value[0] %}",
+            "  {% elseif value and value[1] %}",
+            "    {% set value = value[1] %}",
+            "  {% else %}",
+            "    {% set value = 'error' %}",
+            "  {% endif %}",
+            "",
+            "  {% if value == 'error' %}",
+            "    {% set color = '#ff0000' %}",
+            "  {% elseif value < 1500 %}",
+            "    {% set color = '#0000ff' %}",
+            "  {% elseif value < 1900 %}",
+            "    {% set color = colorInterpolate([ '#0000ff', '#ff00ff' ], (value - 1500.0) / 400) %}",
+            "  {% elseif value < 2000 %}",
+            "    {% set color = colorInterpolate([ '#ff00ff', '#ffff00' ], (value - 1900.0) / 100) %}",
+            "  {% else %}",
+            "    {% set color = colorInterpolate([ '#ffff00', '#00ff00' ], (value - 2000.0) / 50) %}",
+            "  {% endif %}",
+            "{% else %}",
+            "{% set color = '#7f7f7f' %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if tags.start_date %}",
+            "{{ tags.start_date|osmFormatDate({ format: 'short' }) }}",
+            "{% else %}",
+            "{{ trans('unknown') }}",
+            "{% endif %}"
+        ],
+        "popupDescription": [
+            "{% if tags.start_date %}",
+            "{{ tags.start_date|osmFormatDate }}",
+            "{% else %}",
+            "{{ trans('unknown') }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "{{ markerPolygon({ \"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
+        "priority": [
+            "{% set p = 100 %}",
+            "{% if tags.start_date %}{% set p = p - 20 %}{% endif %}",
+            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
+            "{{ p }}"
+        ],
+        "style": {
+            "width": "1",
+            "color": "#000000",
+            "fillColor": "{{ color }}",
+            "fillOpacity": "0.8"
+        }
+    },
+    "info": [
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1400\" }))|raw }}</td>",
+        "    <td>&lt;1500</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1500\" }))|raw }}</td>",
+        "    <td>1500</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1600\" }))|raw }}</td>",
+        "    <td>1600</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1700\" }))|raw }}</td>",
+        "    <td>1700</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1800\" }))|raw }}</td>",
+        "    <td>1800</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1900\" }))|raw }}</td>",
+        "    <td>1900</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"1950\" }))|raw }}</td>",
+        "    <td>1950</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"2000\" }))|raw }}</td>",
+        "    <td>2000</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"2020\" }))|raw }}</td>",
+        "    <td>2020</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\", \"start_date\": \"xxx\" }))|raw }}</td>",
+        "    <td>{{ repoTrans('date format not understood') }}</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerPolygon(evaluate({ \"building\": \"yes\" }))|raw }}</td>",
+        "    <td>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "</table>"
+    ]
+}
diff --git a/buildings-type.json b/buildings-type.json
new file mode 100644
index 0000000..c7c2d85
--- /dev/null
+++ b/buildings-type.json
@@ -0,0 +1,241 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Gebäudearten",
+        "en": "Building types",
+        "fr": "Type",
+        "pt-br": "Tipologias"
+    },
+    "query": {
+        "16": [
+            "(",
+            "  way[building][building!=no];",
+            "  relation[building][building!=no];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set type = tags.building|split(';')[0] %}",
+            "{% set color = const.other.color %}",
+            "{% for cat, data in const %}",
+            "  {% if type in data.types %}",
+            "    {% set color = data.color %}",
+            "  {% endif %}",
+            "{% endfor %}"
+        ],
+        "description": [
+            "{% if tags.building == 'yes' %}",
+            "{{ keyTrans('building') }}",
+            "{% else %}",
+            "{{ tagTransList('building', tags.building) }}",
+            "{% endif %}",
+            "{% if tags.building == 'construction' and tags.construction %}",
+            "({{ tagTransList('building', tags.construction) }})",
+            "{% endif %}"
+        ],
+        "markerSymbol": "",
+        "listMarkerSymbol": "{{ markerPolygon({\"fillColor\": color, \"fillOpacity\": 0.8, \"width\": 1, \"color\": \"#000000\" })|raw }}",
+        "priority": [
+            "{% set p = 100 %}",
+            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
+            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
+            "{{ p }}"
+        ],
+        "style": {
+            "width": "1",
+            "color": "#000000",
+            "fillColor": "{{ color }}",
+            "fillOpacity": "0.8"
+        }
+    },
+    "info": [
+        "<table>",
+        "{% for cat, data in const %}",
+        "  <tr>",
+        "    <td valign='top'>{{ markerPolygon({ \"fillColor\": data.color, \"fillOpacity\": \"0.8\", \"width\": 1, \"color\": \"#000000\" })|raw }}</td>",
+        "    <td onclick='this.classList.toggle(\"infoShowDetails\")'><b>{{ trans(data.name) }}</b><span class='details'>:",
+        "      {% for i, type in data.types %}<span title='building={{ type }}'>{% if i > 0 %}, {% endif %}{{ tagTrans('building', type) }}</span>{% endfor %}",
+        "      </span>",
+        "<span class='summary'><i class=\"fa fa-info-circle\" aria-hidden=\"true\"></i></span>",
+        "    </td>",
+        "  </tr>",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "residential": {
+            "name": "tag:building=residential",
+            "color": "#25a000",
+            "types": [
+                "house",
+                "apartments",
+                "block",
+                "flats",
+                "farm",
+                "detached",
+                "dormitory",
+                "terrace",
+                "houseboat",
+                "bungalow",
+                "static_caravan",
+                "residential",
+                "semidetached_house",
+                "ger",
+                "trullo"
+            ]
+        },
+        "tourism": {
+            "name": "tag:tourism",
+            "color": "#814ce2",
+            "types": [
+                "hotel",
+                "ruins",
+                "conservatory"
+            ]
+        },
+        "commercial": {
+            "name": "tag:building=commercial",
+            "color": "#ec5bcf",
+            "types": [
+                "commercial",
+                "office",
+                "industrial",
+                "retail",
+                "supermarket",
+                "warehouse",
+                "kiosk",
+                "mall",
+                "shop"
+            ]
+        },
+        "religious": {
+            "name": "tag:building=religious",
+            "color": "#af29cc",
+            "types": [
+                "religious",
+                "cathedral",
+                "chapel",
+                "church",
+                "mosque",
+                "temple",
+                "synagogue",
+                "shrine",
+                "monastery"
+            ]
+        },
+        "amenity": {
+            "name": "tag:amenity",
+            "color": "#2935cc",
+            "types": [
+                "kindergarten",
+                "civic",
+                "government",
+                "hospital",
+                "school",
+                "university",
+                "grandstand",
+                "public",
+                "toilets",
+                "college"
+            ]
+        },
+        "agriculture": {
+            "name": "tag:landuse=agriculture",
+            "color": "#92e934",
+            "types": [
+                "bakehouse",
+                "barn",
+                "cowshed",
+                "farm_auxiliary",
+                "greenhouse",
+                "stable",
+                "sty",
+                "kitchen",
+                "slurry_tank",
+                "silo"
+            ]
+        },
+        "industrial": {
+            "name": "tag:landuse=industrial",
+            "color": "#e2da1b",
+            "types": [
+                "construction",
+                "garbage_shed",
+                "transformer_tower",
+                "service",
+                "water_tower",
+                "industrial",
+                "warehouse",
+                "storage_tank"
+            ]
+        },
+        "transportation": {
+            "name": "tag:building=transportation",
+            "color": "#1bb5e2",
+            "types": [
+                "carport",
+                "garage",
+                "garages",
+                "bridge",
+                "hangar",
+                "parking",
+                "train_station",
+                "transportation"
+            ]
+        },
+        "sport": {
+            "name": "tag:sport",
+            "color": "#e21b66",
+            "types": [
+                "pavilion",
+                "riding_hall",
+                "stadium",
+                "sports_hall"
+            ]
+        },
+        "roof": {
+            "name": "tag:building=roof",
+            "color": "#afafaf7f",
+            "types": [
+                "roof"
+            ]
+        },
+        "shelter": {
+            "name": "tag:amenity=shelter",
+            "color": "#cc8725",
+            "types": [
+                "cabin",
+                "hut",
+                "shed"
+            ]
+        },
+        "military": {
+            "name": "tag:military",
+            "color": "#4a7300",
+            "types": [
+                "bunker"
+            ]
+        },
+        "unspecified": {
+            "name": "tag:building=generic",
+            "color": "#7f7f7f",
+            "types": [
+                "yes",
+                "generic"
+            ]
+        },
+        "other": {
+            "name": "other",
+            "color": "#ff0000",
+            "types": []
+        }
+    }
+}
diff --git a/buildings.json b/buildings.json
index 5dacc6f..673cf29 100644
--- a/buildings.json
+++ b/buildings.json
@@ -1,5 +1,5 @@
 {
-    "type": "overpass",
+    "type": "index",
     "name": {
         "de": "Gebäude",
         "en": "Buildings",
@@ -8,33 +8,21 @@
         "pt": "Edifícios",
         "pt-br": "Edificações"
     },
-    "query": {
-        "16": [
-            "(",
-            "  way[building];",
-            "  relation[building];",
-            ")"
-        ]
-    },
-    "feature": {
-        "markerSymbol": null,
-        "priority": [
-            "{% set p = 100 %}",
-            "{% if tags.name %}{% set p = p - 10 %}{% endif %}",
-            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.historic %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.culture %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.highway %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.railway %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.aeroway %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.amenity %}{% set p = p - 1 %}{% endif %}",
-            "{% if tags.tourism %}{% set p = p - 1 %}{% endif %}",
-            "{{ p }}"
-        ],
-        "style": {
-            "width": "1",
-            "color": "#000000",
-            "fillColor": "#000000"
+    "subCategories": [
+        {
+            "id": "buildings-type"
+        },
+        {
+            "id": "buildings-figure-ground"
+        },
+        {
+            "id": "buildings-height"
+        },
+        {
+            "id": "buildings-start_date"
+        },
+        {
+            "id": "buildings-entrances"
         }
-    }
+    ]
 }
diff --git a/car_maxspeed.json b/car_maxspeed.json
index 0b50d60..6c11f5a 100644
--- a/car_maxspeed.json
+++ b/car_maxspeed.json
@@ -16,36 +16,67 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.maxspeed is not defined %}",
             "{% set maxspeedKmh = null %}",
             "{% set maxspeed = null %}",
             "{% set unit = null %}",
-            "{% else %}",
             "",
-            "{% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
-            "{% set maxspeedKmh = tags.maxspeed %}",
-            "{% set maxspeed = tags.maxspeed %}",
-            "{% set unit = \"km/h\" %}",
+            "{% if tags.maxspeed is defined %}",
+            "  {% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedKmh = tags.maxspeed %}",
+            "    {% set maxspeed = tags.maxspeed %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif tags.maxspeed|matches( \"(^[0-9]+) mph$\") %}",
+            "    {% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeed = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
-            "",
-            "{% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
-            "{% if m %}",
-            "{% set maxspeedKmh = m[1] * 1.60934 %}",
-            "{% set maxspeed = m[1] %}",
-            "{% set unit = \"mph\" %}",
+            "{% if attribute(tags, 'maxspeed:forward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedFKmh = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set maxspeedF = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:forward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedFKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedF = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
+            "{% if attribute(tags, 'maxspeed:backward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedBKmh = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set maxspeedB = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:backward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedBKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedB = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
             "{% endif %}",
             "",
             "{% if not maxspeedKmh %}",
             "{% set color = \"#404040\" %}",
             "{% else %}",
             "{% set color = colorInterpolate(const.colorMap, (maxspeedKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedFKmh %}",
+            "{% set colorF = colorInterpolate(const.colorMap, (maxspeedFKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedBKmh %}",
+            "{% set colorB = colorInterpolate(const.colorMap, (maxspeedBKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
             "{% endif %}"
         ],
         "description": [
-            "{% if maxspeed %}",
+            "{% if maxspeedF or maxspeedB %}",
+            "<span style='color: {{ colorB }}'>{{ maxspeedB|default(trans('unknown')) }}</span> / <span style='color: {{ colorF }}'>{{ maxspeedF|default(trans('unknown')) }}</span> {{ unit }}",
+            "{% elseif maxspeed %}",
             "<span style='color: {{ color }}'>{{ maxspeed }} {{ unit }}</span>",
             "{% elseif tags.maxspeed %}",
             "{{ tags.maxspeed }}",
@@ -53,11 +84,32 @@
             "{{ trans('unknown') }}",
             "{% endif %}"
         ],
-        "markerSymbol": null,
+        "markerSymbol": "",
         "listMarkerSymbol": "line",
+        "styles": "{% if maxspeedB or maxspeedF %}left,right,default{% else %}default{% endif %}",
         "style": {
-            "width": "3",
-            "color": "{{ color }}"
+            "width": "{% if maxspeedB or maxspeedF %}0{% else %}4{% endif %}",
+            "color": "{{ color }}",
+            "text": [
+                "{% if maxspeedB or maxspeedF %}",
+                "  {% if maxspeedB %}🡸 {{ maxspeedB }} {% endif %}|{% if maxspeedF %} {{ maxspeedF }} 🡺{% endif %}       ",
+                "{% else %}",
+                "  {{ maxspeed }}         ",
+                "{% endif %}"
+            ],
+            "textRepeat": "1",
+            "textOffset": "4",
+            "textFontWeight": "bold"
+        },
+        "style:left": {
+            "width": "2",
+            "color": "{{ colorB|default('#404040') }}",
+            "offset": "-1"
+        },
+        "style:right": {
+            "width": "2",
+            "color": "{{ colorF|default('#404040') }}",
+            "offset": "1"
         }
     },
     "const": {
diff --git a/car_routes.json b/car_routes.json
index f30b89e..d1c7734 100644
--- a/car_routes.json
+++ b/car_routes.json
@@ -2,6 +2,7 @@
     "type": "overpass",
     "name": {
         "en": "Car routes",
+        "fr": "Itinéraires auto",
         "hu": "Főútvonalak",
         "pt-br": "Rotas rodoviárias"
     },
@@ -22,7 +23,9 @@
             "{% set refs = [] %}",
             "{% set color = '#d41d8c' %}",
             "{% if tags.ref %}",
-            "  {% set refs = refs|merge([ tags.ref ]) %}",
+            "  {% for ref in tags.ref|split(';') %}",
+            "    {% set refs = refs|merge([ ref|trim ]) %}",
+            "  {% endfor %}",
             "{% endif %}",
             "",
             "{% for master in masters %}",
@@ -32,7 +35,9 @@
             "  {% if master.tags.ref %}",
             "    {% set refs = refs|merge([ master.tags.ref ]) %}",
             "  {% endif %}",
-            "{% endfor %}"
+            "{% endfor %}",
+            "",
+            "{% set refs = refs|unique|natsort({ insensitive: true }) %}"
         ],
         "body": [
             "<h4>Routes</h4>",
@@ -52,7 +57,7 @@
             "color": "{{ color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/children.json b/children.json
index e814ed1..69fc913 100644
--- a/children.json
+++ b/children.json
@@ -37,7 +37,7 @@
             "{% elseif tags.shop=='baby_goods' or tags.shop=='toys' %}",
             "{{ keyTrans('shop') }}: {{ tagTrans('shop', tags.shop) }}",
             "{% elseif tags.amenity=='toilets' and tags.diaper %}",
-            "{{ tagTrans('amenity', 'toilets') }} with diaper changing table",
+            "{{ tagTrans('amenity', 'toilets diaper=yes') }}",
             "{% endif %}"
         ],
         "markerSign": [
@@ -78,7 +78,7 @@
         "  </tr>",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>🚽🚼</div></td>",
-        "    <td>{{ tagTrans('amenity', 'toilets') }} with diaper changing table</td>",
+        "    <td>{{ tagTrans('amenity', 'toilets diaper=yes') }}</td>",
         "  </tr>",
         "</table>"
     ]
diff --git a/coal.json b/coal.json
new file mode 100644
index 0000000..3b044d0
--- /dev/null
+++ b/coal.json
@@ -0,0 +1,44 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Kohle",
+        "en": "Coal",
+        "fr": "Charbon",
+        "hu": "Kőszén",
+        "pt-br": "Carvão"
+    },
+    "query": {
+        "11": [
+            "(",
+            "node[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "relation[landuse~\"^(quarry)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "node[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[man_made~\"^(mineshaft)$\"][resource~\"^(|.*;)coal(|;.*)$\"];",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(coal)(|;.*)$\"];",
+            "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];",
+            "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];",
+            "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(coal)(|;.*)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.man_made == 'pipeline' %}",
+            "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
+            "{% elseif tags.man_made %}",
+            "{{ tagTrans('man_made', tags.man_made) }}",
+            "{% elseif tags.power == 'plant' %}",
+            "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.power == 'generator' %}",
+            "{{ tagTrans('power', 'generator') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.landuse == 'quarry' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} {% if tags.resource %}({{ tagTrans('resource', tags.resource) }}){% endif %}",
+            "{% elseif tags.landuse == 'industrial' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
+            "{% endif %}"
+        ],
+        "markerSymbol": null
+    }
+}
diff --git a/communication.json b/communication.json
index 27f8372..83a90d3 100644
--- a/communication.json
+++ b/communication.json
@@ -25,21 +25,38 @@
             "node[amenity~'^(post_office|internet_cafe)$'];",
             "way[amenity~'^(post_office|internet_cafe)$'];",
             "relation[amenity~'^(post_office|internet_cafe)$'];",
+            "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];",
             ");"
         ],
         "16": [
             "(node[amenity~'^(post_office|internet_cafe|post_box|telephone)$'];",
             "way[amenity~'^(post_office|internet_cafe)$'];",
             "relation[amenity~'^(post_office|internet_cafe)$'];",
+            "nwr[office~\"^(telecommunication|it|newspaper|publisher|advertising_agency)$\"];",
             ");"
         ]
     },
     "feature": {
+        "pre": [
+            "{% if tags.amenity %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
         "title": "{{ localizedTag(tags, 'name') |default(localizedTag(tags, 'operator')) |default(tagTrans('amenity', tags.amenity)) }}",
-        "description": "{{ tagTrans('amenity', tags.amenity) }}",
+        "description": [
+            "{% if key == 'office' %}",
+            "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}"
+        ],
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br/>{% endif %}",
         "markerSign": [
-            "{% set data = const[tags.amenity] %}",
+            "{% set data = const[key ~ '=' ~ value] %}",
             "{% if data %}",
             "{{ data.sign|raw }}",
             "{% endif %}"
@@ -47,30 +64,69 @@
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('amenity', value) }}</td>",
+        "    <td>",
+        "      {% if kv|split('=')[0] == 'office' %}",
+        "        {{ keyTrans('office') }}",
+        "        ({{ tagTrans('office', kv|split('=')[1]) }})",
+        "      {% else %}",
+        "        {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "      {% endif %}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "post_office": {
+        "amenity=post_office": {
             "sign": "<img src='maki:post?size=15'>",
             "zoom": 13
         },
-        "post_box": {
+        "amenity=post_box": {
             "sign": "<img src='maki:post?size=11'>",
             "zoom": 16
         },
-        "internet_cafe": {
+        "amenity=internet_cafe": {
             "sign": "<i class='fa fa-laptop' aria-hidden='true'></i>",
             "zoom": 13
         },
-        "telephone": {
+        "office=telecommunication": {
+            "sign": "<i class='fas fa-mobile-alt'></i>",
+            "zoom": 13
+        },
+        "office=it": {
+            "sign": "<i class='fas fa-desktop'></i>",
+            "zoom": 13
+        },
+        "office=newspaper": {
+            "sign": "<i class='fas fa-newspaper'></i>",
+            "zoom": 13
+        },
+        "office=publisher": {
+            "sign": "<i class='fas fa-book'></i>",
+            "zoom": 13
+        },
+        "office=advertising_agency": {
+            "sign": "<i class='fas fa-sign'></i>",
+            "zoom": 13
+        },
+        "office=public_relations": {
+            "sign": "<i class='fas fa-sign'></i>",
+            "zoom": 13
+        },
+        "office=audiovisual_production": {
+            "sign": "<i class='fas fa-film'></i>",
+            "zoom": 13
+        },
+        "office=film_production": {
+            "sign": "<i class='fas fa-film'></i>",
+            "zoom": 13
+        },
+        "amenity=telephone": {
             "sign": "<img src='maki:telephone'>",
             "zoom": 16
         }
diff --git a/culture.json b/culture.json
index 9fd02fc..630f375 100644
--- a/culture.json
+++ b/culture.json
@@ -30,6 +30,7 @@
             "node[tourism~\"^(artwork|gallery|museum|theme_park)$\"];",
             "way[tourism~\"^(artwork|gallery|museum|theme_park)$\"];",
             "relation[tourism~\"^(artwork|gallery|museum|theme_park)$\"];",
+            "nwr[shop~\"^(art)$\"];",
             ")"
         ]
     },
@@ -41,28 +42,81 @@
             "{% elseif tags.tourism %}",
             "{% set key = 'tourism' %}",
             "{% set value = tags.tourism %}",
+            "{% elseif tags.shop %}",
+            "{% set key = 'shop' %}",
+            "{% set value = tags.shop %}",
             "{% endif %}"
         ],
-        "description": "{{ tagTrans(key, value) }}",
-        "markerSign": "{{ attribute(const, key ~ '=' ~ value) }}"
+        "description": [
+            "{% if key == 'shop' %}",
+            "  {{ keyTrans(key) }} ({{ tagTrans(key, value) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}",
+            "",
+            "{% if tags.tourism == 'museum' and tags.museum %}",
+            "({{ tagTrans('museum', tags.museum) }})",
+            "{% endif %}",
+            "{% if tags.amenity == 'theatre' and attribute(tags, 'theatre:genre') %}",
+            "({{ tagTrans('theatre:genre', attribute(tags, 'theatre:genre')) }})",
+            "{% endif %}",
+            "{% if tags.amenity == 'community_centre' and tags.community_centre %}",
+            "({{ tagTrans('community_centre', tags.community_centre) }})",
+            "{% endif %}"
+        ],
+        "body": [
+            "<ul>",
+            "{% if tags.inscription %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('inscription') }}:</span>",
+            "   <span class='value'>{{ localizedTag(tags, 'inscription') }}</span>",
+            "  </li>",
+            "{% elseif attribute(tags, 'inscription:url') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'><a href=\"{{ attribute(tags, 'inscription:url') }}\">{{ keyTrans('inscription') }}</a></span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.artist_name %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-palette\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('artist_name') }}:</span>",
+            "   <span class='value'>{{ enumerate(tags.artist_name) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.material %}",
+            "  <li class='hasSymbol'>",
+            "   <img data-src=\"maki:warehouse\">",
+            "   <span class='key'>{{ keyTrans('material') }}:</span>",
+            "   <span class='value'>{{ tagTransList('material', tags.material) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "</ul>"
+        ],
+        "markerSign": "{{ attribute(const, key ~ '=' ~ value)|raw }}"
     },
     "const": {
         "amenity=arts_centre": "🎨",
         "amenity=cinema": "🎦",
-        "amenity=community_centre": "",
+        "amenity=community_centre": "<i class=\"fas fa-users\" aria-hidden=\"true\"></i>",
         "amenity=fountain": "⛲",
-        "amenity=studio": "",
+        "amenity=studio": "<i class=\"fas fa-microphone\"></i>",
         "amenity=theatre": "🎭",
         "tourism=artwork": "🎨 ",
         "tourism=gallery": "🖼",
         "tourism=museum": "🏛 ",
-        "tourism=theme_park": ""
+        "tourism=theme_park": "<img data-src='maki:amusement-park'>",
+        "shop=art": "<i class=\"fa fa-shopping-cart\"></i>"
     },
     "info": [
         "<table>",
         "{% for value, sign in const %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ sign }}</div></td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ sign|raw }}</div></td>",
         "    <td>{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}</td>",
         "  </tr>",
         "{% endfor %}",
diff --git a/culture_religion.json b/culture_religion.json
index 52cc1a5..17c8e16 100644
--- a/culture_religion.json
+++ b/culture_religion.json
@@ -9,7 +9,7 @@
         "en": "Culture and Religion",
         "es": "Cultura y religión",
         "et": "Kultuur ja religioon",
-        "fr": "Culture et Religion",
+        "fr": "Culture et religion",
         "hu": "Kultúra és vallás",
         "it": "Cultura",
         "ja": "文化",
diff --git a/cycle_routes.json b/cycle_routes.json
index c12c47d..2cb57ed 100644
--- a/cycle_routes.json
+++ b/cycle_routes.json
@@ -16,18 +16,28 @@
     },
     "members": true,
     "feature": {
-        "priority": "{{ const[tags.network].priority|default(4) }}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
         "description": "{{ tagTrans('network', tags.network) }}",
+        "markerSymbol": "",
         "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': const[tags.network].color|default(const[''].color) })|raw }}",
-        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "priority": "{{ const[tags.network].priority|default(4) }}",
         "styles": "",
-        "markerSymbol": ""
+        "style:hover": {
+            "width": "0"
+        },
+        "style:selected": {
+            "width": "0"
+        }
     },
     "memberFeature": {
         "pre": [
             "{% set priority = 4 %}",
             "{% set network = '' %}",
             "{% set refs = [] %}",
+            "{% set dirForward = false %}",
+            "{% set dirBackward = false %}",
+            "{% set hover = false %}",
+            "{% set selected = false %}",
             "",
             "{% for master in masters %}",
             "  {% set _p = const[master.tags.network].priority|default(4) %}",
@@ -38,6 +48,12 @@
             "  {% if master.tags.ref %}",
             "    {% set refs = refs|merge([ master.tags.ref ]) %}",
             "  {% endif %}",
+            "  {% if master.role == 'forward' %}{% set dirForward = true %}",
+            "  {% elseif master.role == 'backward' %}{% set dirBackward = true %}",
+            "  {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
+            "  {% endif %}",
+            "  {% if master.flags.hover %}{% set hover = master.role|default('both') %}{% endif %}",
+            "  {% if master.flags.selected %}{% set selected = master.role|default('both') %}{% endif %}",
             "{% endfor %}"
         ],
         "title": "",
@@ -54,14 +70,64 @@
             "</ul>"
         ],
         "listExclude": "1",
+        "styles": "default{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}",
         "style": {
+            "width": "4",
             "color": "{{ const[network].color }}",
-            "width": 4,
-            "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "opacity": "1",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
+            "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
+            "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
+            "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
+            "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "{{ const[network].color }}",
+            "pattern-path-fillOpacity": "1",
             "textFontWeight": "bold"
+        },
+        "style:hover": {
+            "pane": "hover",
+            "width": "4",
+            "color": "black",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "black",
+            "pattern-path-fillOpacity": "1"
+        },
+        "style:selected": {
+            "pane": "selected",
+            "width": "4",
+            "color": "#3f3f3f",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-fillOpacity": "1"
         }
     },
     "const": {
diff --git a/detailsBody.html b/detailsBody.html
index 6b8d180..ca0b27f 100644
--- a/detailsBody.html
+++ b/detailsBody.html
@@ -1,4 +1,12 @@
 <ul>
+{% set hasDescription = tagsPrefix(tags, 'description:') %}
+{% if tags.description or hasDescription %}
+<li class='hasSymbol'>
+  <i class="fa fa-info" aria-hidden="true"></i>
+  <span class='value'>{{ localizedTag(tags, 'description')|default(attribute(tags, 'description:' ~ hasDescription|keys[0])) }}</span>
+</li>
+{% endif %}
+
 {% set address = tagsPrefix(tags, 'addr:') %}
 {% if address %}
 <li class='hasSymbol'>
@@ -133,4 +141,20 @@
 </li>
 {% endif %}
 
+{% if tags.start_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('start_date') }}:</span>
+   <span class='value'>{{ tags.start_date|osmFormatDate }}</span>
+  </li>
+{% endif %}
+
+{% if tags.opening_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('opening_date') }}:</span>
+   <span class='value'>{{ tags.opening_date|osmFormatDate }}</span>
+  </li>
+{% endif %}
+
 </ul>
diff --git a/education.json b/education.json
index c366e82..5b4772d 100644
--- a/education.json
+++ b/education.json
@@ -32,6 +32,7 @@
             "node[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
             "way[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
             "relation[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
+            "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ],
         "16": [
@@ -39,20 +40,30 @@
             "node[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
             "way[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
             "relation[amenity~'^(college|university|library|school|kindergarten|public_bookcase)$'];",
+            "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('amenity', tags.amenity) }}",
+        "pre": [
+            "{% if tags.office == 'educational_institution' or tags.office == 'research' %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% else %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans(key, value) }}",
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}<br/>{% endif %}",
         "markerSign": [
-            "{% set data = const[tags.amenity] %}",
+            "{% set data = const[key ~ '=' ~ value] %}",
             "{% if data %}",
-            "{{ data.sign }}",
+            "{{ data.sign|raw }}",
             "{% endif %}"
         ],
         "priority": [
-            "{% set data = const[tags.amenity] %}",
+            "{% set data = const[key ~ '=' ~ value] %}",
             "{% if data %}",
             "{{ data.priority }}",
             "{% endif %}"
@@ -60,51 +71,63 @@
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign }}</div></td>",
-        "    <td>{{ tagTrans('amenity', value) }}</td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "university": {
+        "amenity=university": {
             "priority": 0,
             "sign": "🎓",
             "zoom": 11
         },
-        "college": {
+        "amenity=college": {
             "priority": 1,
             "sign": "🎓",
             "zoom": 11
         },
-        "library": {
+        "amenity=library": {
             "priority": 2,
             "sign": "🕮",
             "zoom": 11
         },
-        "school": {
+        "amenity=school": {
             "priority": 3,
             "sign": "🏫",
             "zoom": 14
         },
-        "language_school": {
+        "amenity=language_school": {
             "priority": 3,
             "sign": "🏫",
             "zoom": 14
         },
-        "kindergarten": {
+        "amenity=kindergarten": {
             "priority": 4,
             "sign": "⛹",
             "zoom": 14
         },
-        "public_bookcase": {
+        "amenity=public_bookcase": {
             "priority": 5,
             "sign": "📚",
             "zoom": 16
+        },
+        "office=educational_institution": {
+            "priority": 3,
+            "sign": "🏢",
+            "zoom": 14
+        },
+        "office=research": {
+            "priority": 3,
+            "sign": "<i class='fas fa-vials'></i>",
+            "zoom": 14
         }
     }
 }
diff --git a/power.json b/electric_power.json
similarity index 92%
rename from power.json
rename to electric_power.json
index 4be4028..e2cee97 100644
--- a/power.json
+++ b/electric_power.json
@@ -3,16 +3,16 @@
     "name": {
         "ast": "Enerxía",
         "cs": "Elektřina",
-        "de": "Energie",
-        "en": "Power",
+        "de": "Elektrischer Strom",
+        "en": "Electric Power",
         "et": "Elekter",
-        "fr": "Énergie",
+        "fr": "Production/transport électrique",
         "hu": "Áramellátás",
         "it": "Energia",
         "ja": "電力",
         "nl": "Stroomvoorziening",
         "pt": "Eletricidade",
-        "pt-br": "Energia",
+        "pt-br": "Energia elétrica",
         "ro": "Energie",
         "ru": "Энергетика"
     },
diff --git a/emergency.json b/emergency.json
index 64ef840..73b606d 100644
--- a/emergency.json
+++ b/emergency.json
@@ -34,6 +34,7 @@
             "way[amenity~\"^(fire_station|hospital|police)$\"];",
             "relation[amenity~\"^(fire_station|hospital|police)$\"];",
             "node[emergency~\"^(phone)$\"];",
+            "node[highway=emergency_access_point];",
             ")"
         ]
     },
@@ -45,6 +46,9 @@
             "{% elseif tags.emergency %}",
             "{% set key = 'emergency' %}",
             "{% set value = tags.emergency %}",
+            "{% elseif tags.highway == 'emergency_access_point' %}",
+            "{% set key = 'highway' %}",
+            "{% set value = tags.highway %}",
             "{% endif %}",
             "{% set kv = key ~ \"=\" ~ value %}"
         ],
@@ -52,16 +56,18 @@
         "markerSign": [
             "{% set data = const[kv] %}",
             "{% if data %}",
-            "{{ data.sign }}",
+            "{{ data.sign|raw }}",
             "{% endif %}"
-        ]
+        ],
+        "markerSymbol": "{{ markerPointer({ fillColor: data.background|default('#f27f6a') })|raw }}",
+        "listMarkerSymbol": "{{ markerCircle({ fillColor: data.background|default('#f27f6a') })|raw }}"
     },
     "info": [
         "<table>",
         "{% for value, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign }}</div></td>",
+        "    <td>{{ markerCircle({ fillColor: data.background|default('#f27f6a') })|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
         "    <td>{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}</td>",
         "  </tr>",
         "{% endif %}",
@@ -84,6 +90,11 @@
         "emergency=phone": {
             "zoom": "13",
             "sign": "📞"
+        },
+        "highway=emergency_access_point": {
+            "zoom": "13",
+            "sign": "<img data-src='maki:hospital?fill=white'>",
+            "background": "#009262"
         }
     }
 }
diff --git a/financial.json b/financial.json
index b0ea37a..82b3bfb 100644
--- a/financial.json
+++ b/financial.json
@@ -31,37 +31,75 @@
             "node[amenity~\"^(bank|bureau_de_change|atm)$\"];",
             "way[amenity~\"^(bank|bureau_de_change|atm)$\"];",
             "relation[amenity~\"^(bank|bureau_de_change|atm)$\"];",
+            "node[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];",
+            "way[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];",
+            "relation[office~\"^(financial|accountant|insurance|tax|tax_advisor)$\"];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('amenity', tags.amenity) }}",
-        "markerSign": "{{ const[tags.amenity].sign|raw }}"
+        "pre": [
+            "{% if tags.amenity %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans(key, value) }}",
+        "markerSign": "{{ const[key ~ '=' ~ value].sign|raw }}"
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('amenity', value) }}</td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "atm": {
-            "sign": "<img src='maki:bank?size=11'>",
+        "amenity=atm": {
+            "sign": "<img data-src='maki:bank?size=11'>",
             "zoom": 15
         },
-        "bank": {
-            "sign": "<img src='maki:building'>",
+        "amenity=bank": {
+            "sign": "<img data-src='maki:building'>",
             "zoom": 14
         },
-        "bureau_de_change": {
+        "amenity=bureau_de_change": {
             "sign": "⇄",
             "zoom": 15
+        },
+        "office=financial": {
+            "sign": "<i class=\"fas fa-coins\"></i>",
+            "zoom": 15
+        },
+        "office=accountant": {
+            "sign": "<i class=\"fas fa-book\"></i>",
+            "zoom": 15
+        },
+        "office=insurance": {
+            "sign": "<i class=\"fas fa-file-signature\"></i>",
+            "zoom": 15
+        },
+        "office=tax": {
+            "sign": "%",
+            "zoom": 15
+        },
+        "office=tax_advisor": {
+            "sign": "<span style='color: green'>%</span>",
+            "zoom": 15
+        },
+        "office=cooperative": {
+            "sign": "<i class=\"fas fa-piggy-bank\"></i>",
+            "zoom": 15
         }
     }
 }
diff --git a/hiking_routes.json b/hiking_routes.json
index c553c13..3bf40d9 100644
--- a/hiking_routes.json
+++ b/hiking_routes.json
@@ -57,7 +57,7 @@
             "color": "{{ const[network].color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/historic.json b/historic.json
index dab36a1..0042fc1 100644
--- a/historic.json
+++ b/historic.json
@@ -29,14 +29,45 @@
         ],
         "14": [
             "(",
-            "node[historic][historic!~\"^(memorial|monument)$\"];",
-            "way[historic][historic!~\"^(memorial|monument)$\"];",
-            "relation[historic][historic!~\"^(memorial|monument)$\"];",
+            "node[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
+            "way[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
+            "relation[historic][historic!~\"^(memorial|monument|wayside_cross|wayside_shrine|wayside_chapel)$\"];",
             ")"
         ]
     },
     "feature": {
         "description": "{{ tagTransList('historic', tags.historic) }}",
+        "body": [
+            "<ul>",
+            "{% if tags.inscription %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('inscription') }}:</span>",
+            "   <span class='value'>{{ localizedTag(tags, 'inscription') }}</span>",
+            "  </li>",
+            "{% elseif attribute(tags, 'inscription:url') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'><a href=\"{{ attribute(tags, 'inscription:url') }}\">{{ keyTrans('inscription') }}</a></span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'historic:civilization') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-users\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('historic:civilization') }}:</span>",
+            "   <span class='value'>{{ tagTrans('historic:civilization', attribute(tags, 'historic:civilization')) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'memorial:conflict') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-bolt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('memorial:conflict') }}:</span>",
+            "   <span class='value'>{{ tagTransList('memorial:conflict', attribute(tags, 'memorial:conflict')) }}</span>",
+            "  </li>",
+            "{% endif %}"
+        ],
         "markerSign": "{{ const[tags.historic].sign|raw }}"
     },
     "info": [
@@ -59,19 +90,27 @@
     ],
     "const": {
         "archaeological_site": {
-            "sign": "",
+            "sign": "<i class=\"fas fa-archway\"></i>",
             "zoom": 11
         },
         "battlefield": {
-            "sign": "",
+            "sign": "⚔️",
             "zoom": 11
         },
         "castle": {
-            "sign": "<img src='maki:castle'>",
+            "sign": "<img data-src='maki:castle'>",
             "zoom": 11
         },
+        "building": {
+            "sign": "<img data-src='maki:building'>",
+            "zoom": 14
+        },
         "aircraft": {
-            "sign": "<img src='maki:airport'>",
+            "sign": "<img data-src='maki:airport'>",
+            "zoom": 14
+        },
+        "ruins": {
+            "sign": "<img data-src='temaki:ruins'>",
             "zoom": 14
         }
     }
diff --git a/index.json b/index.json
index c3eb88e..ba5a57d 100644
--- a/index.json
+++ b/index.json
@@ -13,7 +13,7 @@
                 "en": "Leisure, Sport and Shopping",
                 "es": "Ocio, deporte y compras",
                 "et": "Vaba aeg, sport ja ostmine",
-                "fr": "Loisirs",
+                "fr": "Vie quotidienne, loisirs et sports",
                 "hu": "Szabadidő, sport és vásárlás",
                 "it": "Tempo libero, sport e shopping",
                 "ja": "レジャー",
@@ -46,6 +46,9 @@
                 },
                 {
                     "id": "outdoor"
+                },
+                {
+                    "id": "swimming_bathing"
                 }
             ]
         },
@@ -86,14 +89,23 @@
                 {
                     "id": "communication"
                 },
+                {
+                    "id": "office"
+                },
                 {
                     "id": "financial"
                 },
+                {
+                    "id": "law"
+                },
                 {
                     "id": "public"
                 },
                 {
                     "id": "tourism_services"
+                },
+                {
+                    "id": "organisations"
                 }
             ]
         },
@@ -250,7 +262,32 @@
                     "id": "military"
                 },
                 {
-                    "id": "power"
+                    "id": "energy",
+                    "type": "index",
+                    "name": {
+                        "en": "Energy",
+                        "de": "Energie",
+                        "pt-br": "Energia",
+                        "fr": "Énergie",
+                        "hu": "Energiaellátás"
+                    },
+                    "subCategories": [
+                        {
+                            "id": "electric_power"
+                        },
+                        {
+                            "id": "power_routes"
+                        },
+                        {
+                            "id": "coal"
+                        },
+                        {
+                            "id": "oil_gas"
+                        },
+                        {
+                            "id": "renewables"
+                        }
+                    ]
                 },
                 {
                     "id": "railway",
@@ -277,6 +314,9 @@
                         {
                             "id": "railway-electrification"
                         },
+                        {
+                            "id": "railway-maxspeed"
+                        },
                         {
                             "id": "railway-routes"
                         }
@@ -316,6 +356,9 @@
                 },
                 {
                     "id": "wikipedia"
+                },
+                {
+                    "id": "xmas"
                 }
             ]
         }
diff --git a/lang/ast.json b/lang/ast.json
index c2e4e16..dd6c6ce 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Infraestructures",
     "category:alternative_routes": "Rutes",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Infraestructures",
     "category:car_furniture": "Acondicionamientu urbanu",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicaciones",
     "category:construction": "Sitios d'obres",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Servicios educativos",
+    "category:electric_power": "Enerxía",
     "category:emergency": "Servicios d'emerxencia",
+    "category:energy": "",
     "category:financial": "Dineru",
     "category:gastro": "Gastronomía",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Accesu a Internet",
+    "category:law": "",
     "category:leisure": "Recréu",
     "category:leisure_sport_shopping": "Recréu, deportes y compres",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formaciones naturales",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Otres",
     "category:outdoor": "",
     "category:phone": "Teléfonos",
@@ -39,7 +52,7 @@
     "category:places_geo": "Llugares",
     "category:playgrounds": "Xuegos infantiles",
     "category:post": "Corréu",
-    "category:power": "Enerxía",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Paraes y estaciones",
@@ -48,14 +61,17 @@
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Relixón",
+    "category:renewables": "",
     "category:residential": "Zones residenciales",
     "category:resources": "Estraición de recursos",
     "category:services": "Servicios",
     "category:shop": "Compres",
     "category:special": "",
     "category:sport": "Deportes",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismu",
     "category:tourism_services": "Turismu",
     "category:transport": "Tresporte",
@@ -68,5 +84,9 @@
     "category:waste": "Basures",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Fábriques"
+    "category:works": "Fábriques",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ca.json b/lang/ca.json
index 8be27ba..ac2b799 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicacions",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "",
+    "category:electric_power": "",
     "category:emergency": "Serveis d'emergència",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Accés a Internet",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Oci, esport i compres",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "Serveis",
     "category:shop": "",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "",
     "category:tourism_services": "",
     "category:transport": "",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/cs.json b/lang/cs.json
index 05c221e..a6dd03c 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Občanská vybavenost",
     "category:alternative_routes": "Trasy cest",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Občasnká vybavenost",
     "category:car_furniture": "Pouliční přislušenství",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Komunikace",
     "category:construction": "Staveniště",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Vzdělávací služby",
+    "category:electric_power": "Elektřina",
     "category:emergency": "Pohotovostní služby",
+    "category:energy": "",
     "category:financial": "Finanční služby",
     "category:gastro": "Stravování",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Přístup k internetu",
+    "category:law": "",
     "category:leisure": "Volný čas",
     "category:leisure_sport_shopping": "Volný čas, sporty a nákupy",
+    "category:memorial": "",
     "category:military": "Vojenské",
     "category:mtb-routes": "",
     "category:natural": "Přírodní úkazy",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Jiné",
     "category:outdoor": "",
     "category:phone": "Telefony",
@@ -39,7 +52,7 @@
     "category:places_geo": "Sídla",
     "category:playgrounds": "Hřiště",
     "category:post": "Poštovní služby",
-    "category:power": "Elektřina",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Zastávky & Stanice",
@@ -48,14 +61,17 @@
     "category:railway": "Železnice",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religion",
+    "category:renewables": "",
     "category:residential": "Obytné oblasti",
     "category:resources": "Těžba surovin",
     "category:services": "Služby",
     "category:shop": "Obchody",
     "category:special": "",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turistika",
     "category:tourism_services": "Turistika",
     "category:transport": "Doprava",
@@ -68,5 +84,9 @@
     "category:waste": "Nakládání s odpady",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Továrny"
+    "category:works": "Továrny",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/de.json b/lang/de.json
index 48e550a..9ef0409 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Einrichtungen",
     "category:alternative_routes": "(ausgeschilderte) Routen",
     "category:buildings": "Gebäude",
+    "category:buildings-entrances": "Eingänge",
+    "category:buildings-figure-ground": "Schwarzplan",
+    "category:buildings-height": "Gebäudehöhen",
+    "category:buildings-start_date": "Gebäudealter",
+    "category:buildings-type": "Gebäudearten",
     "category:car_amenities": "Einrichtungen",
     "category:car_furniture": "Straßenausstattung",
     "category:car_maxspeed": "Höchstgeschwindigkeiten",
     "category:car_routes": "",
     "category:children": "Einrichtungen für Kinder",
+    "category:coal": "Kohle",
     "category:communication": "Kommunikation",
     "category:construction": "Baustellen",
     "category:craft": "Handwerk",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "Einrichtungen",
     "category:cycle_routes": "Radrouten",
     "category:education": "Bildungseinrichtungen",
+    "category:electric_power": "Elektrischer Strom",
     "category:emergency": "Notfalldienste",
+    "category:energy": "Energie",
     "category:financial": "Finanzen",
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "Rauchfreie Gastronomie",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "Infrastruktur",
     "category:internet": "Internetzugang",
+    "category:law": "",
     "category:leisure": "Freizeit",
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
+    "category:memorial": "Denkmäler",
     "category:military": "Militär",
     "category:mtb-routes": "",
     "category:natural": "Geographische Objekte",
+    "category:office": "Ämter, Dienst- und Geschäftsstellen",
+    "category:oil_gas": "Erdöl und Erdgas",
+    "category:organisations": "",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
     "category:phone": "Telekommunikation",
@@ -39,7 +52,7 @@
     "category:places_geo": "Orte",
     "category:playgrounds": "Spielplätze",
     "category:post": "Post",
-    "category:power": "Energie",
+    "category:power_routes": "",
     "category:pt": "ÖV Karte",
     "category:pt:routes": "Routen",
     "category:pt:stops": "Haltestellen",
@@ -48,14 +61,17 @@
     "category:railway": "Eisenbahn",
     "category:railway-electrification": "Eisenbahn Elektrifizierung",
     "category:railway-infrastructure": "Eisenbahn Infrastruktur",
+    "category:railway-maxspeed": "Eisenbahn Höchstgeschwindigkeiten",
     "category:railway-routes": "",
     "category:religion": "Religion",
+    "category:renewables": "Erneuerbare Energien",
     "category:residential": "Wohngebiete",
     "category:resources": "Ressourcengewinnung",
     "category:services": "Dienste",
     "category:shop": "Einkauf",
     "category:special": "Spezial",
     "category:sport": "Sport",
+    "category:swimming_bathing": "Schwimmen und Baden",
     "category:tourism_attractions": "Tourismus",
     "category:tourism_services": "Tourismus",
     "category:transport": "Transport",
@@ -69,5 +85,9 @@
     "category:water": "Gewässer",
     "category:wikipedia": "Wikipedia",
     "category:works": "Fabriken",
+    "category:xmas": "Weihnachten",
+    "date format not understood": "Datumsformat nicht erkannt",
+    "outdated feature": "Informationen nicht aktuell",
+    "xmas:outdated-warning": "Objekt wurde nicht für die aktuelle Saison aktualisiert. Bitte prüfen und das Tag 'xmas:lastcheck' auf das aktuelle Datum setzen.",
     "Objects with diet information": "Objekte mit Ernährungsinformationen"
 }
diff --git a/lang/el.json b/lang/el.json
index 8dd6d13..b631c5a 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Επικοινωνίες",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Υπηρεσίες Εκπαίδευσης",
+    "category:electric_power": "",
     "category:emergency": "Υπηρεσίες Έκτακτης Ανάγκης",
+    "category:energy": "",
     "category:financial": "Χρήμα",
     "category:gastro": "Γαστρονομία",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Αναψυχή",
     "category:leisure_sport_shopping": "Αναψυχή, Αθλητισμός και Αγορές",
+    "category:memorial": "",
     "category:military": "Στρατιωτικό",
     "category:mtb-routes": "",
     "category:natural": "Φυσικοί Σχηματισμοί",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "Μέρη",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Στάσεις & Σταθμοί",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Θρησκεία",
+    "category:renewables": "",
     "category:residential": "Περιοχές Κατοικίας",
     "category:resources": "",
     "category:services": "Υπηρεσίες",
     "category:shop": "Αγορές",
     "category:special": "",
     "category:sport": "Άθληση",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Τουρισμός",
     "category:tourism_services": "Τουρισμός",
     "category:transport": "Μεταφορές",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/en.json b/lang/en.json
index 302245a..a804044 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Amenities",
     "category:alternative_routes": "Routes",
     "category:buildings": "Buildings",
+    "category:buildings-entrances": "Entrances",
+    "category:buildings-figure-ground": "Figure-ground diagram",
+    "category:buildings-height": "Building height",
+    "category:buildings-start_date": "Building age",
+    "category:buildings-type": "Building types",
     "category:car_amenities": "Amenities",
     "category:car_furniture": "Street Furniture",
     "category:car_maxspeed": "Maxspeed",
     "category:car_routes": "Car routes",
     "category:children": "Children amenities",
+    "category:coal": "Coal",
     "category:communication": "Communication",
     "category:construction": "Construction Sites",
     "category:craft": "Craft",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "Amenities",
     "category:cycle_routes": "Cycle Routes",
     "category:education": "Educational Services",
+    "category:electric_power": "Electric Power",
     "category:emergency": "Emergency Services",
+    "category:energy": "Energy",
     "category:financial": "Financial",
     "category:gastro": "Gastronomy",
     "category:gastro-smoking": "Smokefree Gastronomy",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "Infrastructure",
     "category:internet": "Internet access",
+    "category:law": "Law",
     "category:leisure": "Leisure",
     "category:leisure_sport_shopping": "Leisure, Sport and Shopping",
+    "category:memorial": "Memorials",
     "category:military": "Military",
     "category:mtb-routes": "Mountain bike routes",
     "category:natural": "Natural Formations",
+    "category:office": "Offices",
+    "category:oil_gas": "Petroleum and natural gas",
+    "category:organisations": "Organisations",
     "category:other": "Other",
     "category:outdoor": "Outdoor activities",
     "category:phone": "Phone",
@@ -39,7 +52,7 @@
     "category:places_geo": "Places",
     "category:playgrounds": "Playground",
     "category:post": "Post",
-    "category:power": "Power",
+    "category:power_routes": "Power routes",
     "category:pt": "Public transport map",
     "category:pt:routes": "Routes",
     "category:pt:stops": "Stops & Stations",
@@ -48,14 +61,17 @@
     "category:railway": "Railway",
     "category:railway-electrification": "Railway electrification",
     "category:railway-infrastructure": "Railway infrastructure",
+    "category:railway-maxspeed": "Railway Maxspeed",
     "category:railway-routes": "Railway Routes",
     "category:religion": "Religion",
+    "category:renewables": "Renewables",
     "category:residential": "Residential Areas",
     "category:resources": "Resource Extraction",
     "category:services": "Services",
     "category:shop": "Shopping",
     "category:special": "Special",
     "category:sport": "Sport",
+    "category:swimming_bathing": "Swimming and bathing",
     "category:tourism_attractions": "Tourism",
     "category:tourism_services": "Tourism",
     "category:transport": "Transportation",
@@ -68,5 +84,9 @@
     "category:waste": "Disposal",
     "category:water": "Waterbodies",
     "category:wikipedia": "Wikipedia",
-    "category:works": "Works"
+    "category:works": "Works",
+    "category:xmas": "Christmas",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": "Feature has not been updated for the current season! Please check and set the tag 'xmas:lastcheck' to the current date."
 }
diff --git a/lang/es.json b/lang/es.json
index 98640c8..f5f32dc 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "",
+    "category:electric_power": "",
     "category:emergency": "Servicios de emergencia",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Acceso a Internet",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Ocio, deporte y compras",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Paradas y estaciones",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "Servicios",
     "category:shop": "",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "",
     "category:tourism_services": "",
     "category:transport": "",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/et.json b/lang/et.json
index 32fb054..e4fed49 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Kommunikatsioon",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Haridusteenused",
+    "category:electric_power": "Elekter",
     "category:emergency": "Hädaabi teenused",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Vaba aeg, sport ja ostmine",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Ülejäänud",
     "category:outdoor": "",
     "category:phone": "Telefon",
@@ -39,7 +52,7 @@
     "category:places_geo": "Kohad",
     "category:playgrounds": "Mänguväljak",
     "category:post": "",
-    "category:power": "Elekter",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,14 +61,17 @@
     "category:railway": "Raudtee",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religioon",
+    "category:renewables": "",
     "category:residential": "Elamupiirkonnad",
     "category:resources": "",
     "category:services": "Teenused",
     "category:shop": "Ostmine",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turism",
     "category:tourism_services": "Turism",
     "category:transport": "Transport",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/fr.json b/lang/fr.json
index 6fec0e0..088e64e 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -4,20 +4,28 @@
     "category:alternative_amenities": "Équipement",
     "category:alternative_routes": "Routes",
     "category:buildings": "Bâtiments",
+    "category:buildings-entrances": "Entrées",
+    "category:buildings-figure-ground": "Empreintes",
+    "category:buildings-height": "Hauteur",
+    "category:buildings-start_date": "Date de construction",
+    "category:buildings-type": "Type",
     "category:car_amenities": "Équipements auto",
     "category:car_furniture": "Fournitures automobiles",
     "category:car_maxspeed": "Limites de vitesse",
-    "category:car_routes": "",
+    "category:car_routes": "Itinéraires auto",
     "category:children": "Équipements pour enfants",
+    "category:coal": "Charbon",
     "category:communication": "Communication",
     "category:construction": "Constructions",
     "category:craft": "Artisanat",
     "category:culture": "Culture",
-    "category:culture_religion": "Culture et Religion",
+    "category:culture_religion": "Culture et religion",
     "category:cycle_amenities": "Équipements vélo",
     "category:cycle_routes": "Itinéraires vélo",
     "category:education": "Éducation",
+    "category:electric_power": "Production/transport électrique",
     "category:emergency": "Services d'urgence",
+    "category:energy": "Énergie",
     "category:financial": "Finance",
     "category:gastro": "Restauration",
     "category:gastro-smoking": "Restauration sans tabac",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "Infrastructures",
     "category:internet": "Internet",
+    "category:law": "Services législatifs",
     "category:leisure": "Loisirs",
-    "category:leisure_sport_shopping": "Loisirs",
-    "category:military": "Militaire",
+    "category:leisure_sport_shopping": "Vie quotidienne, loisirs et sports",
+    "category:memorial": "Mémoriaux",
+    "category:military": "Équipements et zones militaires",
     "category:mtb-routes": "Itinéraires de VTT",
     "category:natural": "Éléments naturels",
+    "category:office": "Bureaux",
+    "category:oil_gas": "Pétrole et gaz naturel",
+    "category:organisations": "Organisations",
     "category:other": "Autres",
     "category:outdoor": "Activités de plein air",
     "category:phone": "Téléphone",
@@ -39,27 +52,30 @@
     "category:places_geo": "Lieux",
     "category:playgrounds": "Jeux pour enfants",
     "category:post": "",
-    "category:power": "Énergie",
-    "category:pt": "",
+    "category:power_routes": "Réseaux électriques",
+    "category:pt": "Carte des transports publics",
     "category:pt:routes": "Lignes",
     "category:pt:stops": "Arrêts/Stops, Stations",
     "category:pt_amenities": "Équipements",
-    "category:public": "Services Publics",
+    "category:public": "Services et équipements publics",
     "category:railway": "Chemins de fer",
     "category:railway-electrification": "Puissance électrique ferroviaire",
     "category:railway-infrastructure": "Infrastructure ferroviaire",
+    "category:railway-maxspeed": "Limites de vitesse",
     "category:railway-routes": "Lignes ferroviaires",
     "category:religion": "Religion",
+    "category:renewables": "Énergies renouvelables",
     "category:residential": "Zones résidentielles",
     "category:resources": "Extraction des ressources",
     "category:services": "Services",
     "category:shop": "Magasins/Boutiques",
     "category:special": "Catégories spéciales",
     "category:sport": "Sports",
+    "category:swimming_bathing": "Natation, baignade et bains",
     "category:tourism_attractions": "Tourisme",
     "category:tourism_services": "Tourisme",
     "category:transport": "Transports",
-    "category:transport_alternative": "Alternatif (Cyclisme, Randonnée, ...)",
+    "category:transport_alternative": "Alternatif (cyclisme, randonnée, ...)",
     "category:transport_car": "Transport automobile",
     "category:transport_cycle": "Cyclisme",
     "category:transport_pt": "Transports publics",
@@ -68,5 +84,9 @@
     "category:waste": "Déchets/Recyclage",
     "category:water": "Hydrographie",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Zones industrielles"
+    "category:works": "Zones industrielles",
+    "category:xmas": "Noël",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/hu.json b/lang/hu.json
index 541d46f..5fd5cb9 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Létesítmények",
     "category:alternative_routes": "Útvonalak",
     "category:buildings": "Épületek",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Létesítmények",
     "category:car_furniture": "Jelzőtáblák",
     "category:car_maxspeed": "Sebességkorlátozás",
     "category:car_routes": "Főútvonalak",
     "category:children": "Gyermekek",
+    "category:coal": "Kőszén",
     "category:communication": "Kommunikácó",
     "category:construction": "Építési terület",
     "category:craft": "Műhelyek",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "Kerékpáros létesítmények",
     "category:cycle_routes": "Kerékpáros útvonalak",
     "category:education": "Oktatás",
+    "category:electric_power": "Áramellátás",
     "category:emergency": "Vészhelyzet",
+    "category:energy": "Energiaellátás",
     "category:financial": "Pénzügyek",
     "category:gastro": "Vendéglátás",
     "category:gastro-smoking": "Nem dohányzó vendéglátóhelyek",
@@ -27,11 +35,16 @@
     "category:index": "Tartalom",
     "category:infrastructure": "Infrastruktúra",
     "category:internet": "Internetcsatlakozás",
+    "category:law": "",
     "category:leisure": "Szabadidő",
     "category:leisure_sport_shopping": "Szabadidő, sport és vásárlás",
+    "category:memorial": "Emlékművek",
     "category:military": "Katonai objektumok",
     "category:mtb-routes": "Hegyikerékpáros útvonalak",
     "category:natural": "Természeti képződmények",
+    "category:office": "Irodák, hivatalok",
+    "category:oil_gas": "Kőolaj, földgáz",
+    "category:organisations": "",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
     "category:phone": "Telefon",
@@ -39,7 +52,7 @@
     "category:places_geo": "Helyek",
     "category:playgrounds": "Játszóterek",
     "category:post": "Posta",
-    "category:power": "Áramellátás",
+    "category:power_routes": "Távvezetékek",
     "category:pt": "Tömegközlekedési térkép",
     "category:pt:routes": "Útvonalak",
     "category:pt:stops": "Megállók és állomások",
@@ -48,16 +61,19 @@
     "category:railway": "Vasút",
     "category:railway-electrification": "Vasút villamosítottsága",
     "category:railway-infrastructure": "Vasúti infrastruktúra",
+    "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",
     "category:religion": "Vallás",
+    "category:renewables": "Megújuló energia",
     "category:residential": "Lakóövezetek",
     "category:resources": "Bányászat",
     "category:services": "Szolgáltatások",
     "category:shop": "Vásárlás",
     "category:special": "Speciális",
     "category:sport": "Sport",
+    "category:swimming_bathing": "Fürdőzés, úszás",
     "category:tourism_attractions": "Látnivalók",
-    "category:tourism_services": "Turisztikai szolgáltatások",
+    "category:tourism_services": "Szálláshelyek, turisztikai információk",
     "category:transport": "Közlekedés",
     "category:transport_alternative": "Alternatív (Kerékpár, Túra)",
     "category:transport_car": "Autós közlekedés",
@@ -68,5 +84,9 @@
     "category:waste": "Hulladék",
     "category:water": "Vizek",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Üzemek"
+    "category:works": "Üzemek",
+    "category:xmas": "Karácsony",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/it.json b/lang/it.json
index 96517f0..0a02801 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Infrastrutture",
     "category:alternative_routes": "Itinerari segnalati",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Infrastrutture",
     "category:car_furniture": "Dotazioni stradali",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Communicazioni",
     "category:construction": "Cantieri",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Istruzione",
+    "category:electric_power": "Energia",
     "category:emergency": "Servizi d'emergenza",
+    "category:energy": "",
     "category:financial": "Finanze",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Tempo libero",
     "category:leisure_sport_shopping": "Tempo libero, sport e shopping",
+    "category:memorial": "",
     "category:military": "Militare",
     "category:mtb-routes": "",
     "category:natural": "Natura",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Altri",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "Luoghi",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "Energia",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Stazioni e fermate",
@@ -48,14 +61,17 @@
     "category:railway": "Ferrovie",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religione",
+    "category:renewables": "",
     "category:residential": "Aree residenziali",
     "category:resources": "Areee estrattive",
     "category:services": "Servizi",
     "category:shop": "Acquisti",
     "category:special": "",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Trasporti",
@@ -68,5 +84,9 @@
     "category:waste": "Smaltimento",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Fabbriche"
+    "category:works": "Fabbriche",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ja.json b/lang/ja.json
index b1e963f..478c538 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "生活環境",
     "category:alternative_routes": "ルート",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "生活環境",
     "category:car_furniture": "街路設置公共物",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "交流",
     "category:construction": "工事中",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "教育サービス",
+    "category:electric_power": "電力",
     "category:emergency": "緊急サービス",
+    "category:energy": "",
     "category:financial": "金融",
     "category:gastro": "食べ物",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "インターネット接続",
+    "category:law": "",
     "category:leisure": "レジャー",
     "category:leisure_sport_shopping": "レジャー",
+    "category:memorial": "",
     "category:military": "軍事",
     "category:mtb-routes": "",
     "category:natural": "自然地層",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "その他",
     "category:outdoor": "",
     "category:phone": "電話",
@@ -39,7 +52,7 @@
     "category:places_geo": "場所",
     "category:playgrounds": "",
     "category:post": "郵便",
-    "category:power": "電力",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "停留所と駅",
@@ -48,14 +61,17 @@
     "category:railway": "鉄道",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "宗教",
+    "category:renewables": "",
     "category:residential": "住居エリア",
     "category:resources": "",
     "category:services": "サービス",
     "category:shop": "ショッピング",
     "category:special": "",
     "category:sport": "スポーツ",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "観光",
     "category:tourism_services": "観光",
     "category:transport": "輸送",
@@ -68,5 +84,9 @@
     "category:waste": "処理場",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "工場"
+    "category:works": "工場",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/nl.json b/lang/nl.json
index edb0a13..cad77ca 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Voorzieningen",
     "category:alternative_routes": "Alternatieve routes",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Voorzieningen",
     "category:car_furniture": "Straatmeubilair",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Communicatie",
     "category:construction": "Bouwterrein",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Onderwijs",
+    "category:electric_power": "Stroomvoorziening",
     "category:emergency": "Hulpdiensten",
+    "category:energy": "",
     "category:financial": "Financieel",
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Internettoegang",
+    "category:law": "",
     "category:leisure": "Vrije tijd",
     "category:leisure_sport_shopping": "Vrije tijd, Sport en Winkelen",
+    "category:memorial": "",
     "category:military": "Militair",
     "category:mtb-routes": "",
     "category:natural": "Natuurlijke Formaties",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Andere",
     "category:outdoor": "",
     "category:phone": "Telefonie",
@@ -39,7 +52,7 @@
     "category:places_geo": "Plaatsen",
     "category:playgrounds": "",
     "category:post": "Post",
-    "category:power": "Stroomvoorziening",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Haltes en Stations",
@@ -48,14 +61,17 @@
     "category:railway": "Spoorwegen",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religie",
+    "category:renewables": "",
     "category:residential": "Woongebieden",
     "category:resources": "Grondstoffenwinning",
     "category:services": "Dienstverlening",
     "category:shop": "Winkelen",
     "category:special": "",
     "category:sport": "Sport",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Toerisme",
     "category:tourism_services": "Toerisme",
     "category:transport": "Vervoer",
@@ -68,5 +84,9 @@
     "category:waste": "Afvalverwijdering",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Fabrieken"
+    "category:works": "Fabrieken",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/pl.json b/lang/pl.json
index 45961b0..77e00eb 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "Elementy drogowe",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Edukacyjne",
+    "category:electric_power": "",
     "category:emergency": "",
+    "category:energy": "",
     "category:financial": "Finasowe",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "Wypoczynek, Sport i Zakupy",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "Miejsca",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Przystanki i Stacje",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "Usługi",
     "category:shop": "Zakupy",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turystyka",
     "category:tourism_services": "Turystyka",
     "category:transport": "Transport",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/pt-br.json b/lang/pt-br.json
index a79642a..0397155 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Equipamentos",
     "category:alternative_routes": "Rotas",
     "category:buildings": "Edificações",
+    "category:buildings-entrances": "Acessos",
+    "category:buildings-figure-ground": "Cheios e vazios",
+    "category:buildings-height": "Altura",
+    "category:buildings-start_date": "Idade",
+    "category:buildings-type": "Tipologias",
     "category:car_amenities": "Equipamentos",
     "category:car_furniture": "Mobiliário urbano",
     "category:car_maxspeed": "Velocidade máxima",
     "category:car_routes": "Rotas rodoviárias",
     "category:children": "Equipamentos infantis",
+    "category:coal": "Carvão",
     "category:communication": "Comunicação",
     "category:construction": "Terrenos vazios e obras",
     "category:craft": "Ofícios",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "Equipamentos",
     "category:cycle_routes": "Ciclorrotas",
     "category:education": "Educação",
+    "category:electric_power": "Energia elétrica",
     "category:emergency": "Emergência",
+    "category:energy": "Energia",
     "category:financial": "Finanças",
     "category:gastro": "Gastronomia",
     "category:gastro-smoking": "Gastronomia sem fumo",
@@ -27,11 +35,16 @@
     "category:index": "Índice",
     "category:infrastructure": "Infraestrutura",
     "category:internet": "Acesso à Internet",
+    "category:law": "Direito",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
+    "category:memorial": "Memoriais",
     "category:military": "Militar",
-    "category:mtb-routes": "Rotas mountain bike",
+    "category:mtb-routes": "Rotas de mountain bike",
     "category:natural": "Formações naturais",
+    "category:office": "Escritórios e agências",
+    "category:oil_gas": "Petróleo e gás",
+    "category:organisations": "Organizações",
     "category:other": "Outros",
     "category:outdoor": "Atividades ao ar livre",
     "category:phone": "Telefone",
@@ -39,25 +52,28 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
-    "category:power": "Energia",
+    "category:power_routes": "Rotas de energia",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paradas e estações",
     "category:pt_amenities": "Equipamentos",
-    "category:public": "Serviços públicos",
+    "category:public": "Utilidade pública",
     "category:railway": "Ferrovia",
     "category:railway-electrification": "Eletrificação ferroviária",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
+    "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",
     "category:religion": "Religião",
+    "category:renewables": "Renováveis",
     "category:residential": "Áreas residenciais",
     "category:resources": "Extração de recursos",
     "category:services": "Prestação de serviços",
     "category:shop": "Compras",
     "category:special": "Especial",
     "category:sport": "Esportes",
+    "category:swimming_bathing": "Natação e banho",
     "category:tourism_attractions": "Turismo",
-    "category:tourism_services": "Serviços de turismo",
+    "category:tourism_services": "Serviços turísticos",
     "category:transport": "Mobilidade",
     "category:transport_alternative": "Transporte alternativo",
     "category:transport_car": "Tráfego individual",
@@ -68,5 +84,9 @@
     "category:waste": "Lixo",
     "category:water": "Hidrografia",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Fábricas"
+    "category:works": "Produção",
+    "category:xmas": "Natal",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/pt.json b/lang/pt.json
index e055231..e38e6a6 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "Rotas",
     "category:buildings": "Edifícios",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "Mobiliário urbano",
     "category:car_maxspeed": "Velocidade máxima",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicação",
     "category:construction": "Locais de construção",
     "category:craft": "Artesanato",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "Ciclovias",
     "category:education": "Educação",
+    "category:electric_power": "Eletricidade",
     "category:emergency": "Emergência",
+    "category:energy": "",
     "category:financial": "Finanças",
     "category:gastro": "Restauração",
     "category:gastro-smoking": "Restauração livre de tabaco",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "Infraestrutura",
     "category:internet": "Acesso à Internet",
+    "category:law": "",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, desporto e compras",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "Formações naturais",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Outros",
     "category:outdoor": "",
     "category:phone": "Telefone",
@@ -39,7 +52,7 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parques infantis",
     "category:post": "Correios",
-    "category:power": "Eletricidade",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "",
@@ -48,14 +61,17 @@
     "category:railway": "Linhas ferroviárias",
     "category:railway-electrification": "Eletrificação ferroviária",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
+    "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "",
     "category:religion": "Religião",
+    "category:renewables": "",
     "category:residential": "Áreas residenciais",
     "category:resources": "Extração de recursos",
     "category:services": "Serviços",
     "category:shop": "Compras",
     "category:special": "Especial",
     "category:sport": "Desporto",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Transportes",
@@ -68,5 +84,9 @@
     "category:waste": "Lixo",
     "category:water": "Massas de água",
     "category:wikipedia": "Wikipédia",
-    "category:works": "Fábricas"
+    "category:works": "Fábricas",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ro.json b/lang/ro.json
index d79d6b0..1ac1b5b 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Comunicatii",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Servicii educatie",
+    "category:electric_power": "Energie",
     "category:emergency": "Servicii urgenta",
+    "category:energy": "",
     "category:financial": "Financiar",
     "category:gastro": "Gastronomie",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "Acces internet",
+    "category:law": "",
     "category:leisure": "Timp liber",
     "category:leisure_sport_shopping": "Timp liber, Sport si Cumparaturi",
+    "category:memorial": "",
     "category:military": "Militar",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Altele",
     "category:outdoor": "",
     "category:phone": "Telefon",
@@ -39,7 +52,7 @@
     "category:places_geo": "Locuri",
     "category:playgrounds": "Loc de joaca",
     "category:post": "",
-    "category:power": "Energie",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Religie",
+    "category:renewables": "",
     "category:residential": "Zona rezidentiala",
     "category:resources": "",
     "category:services": "Servicii",
     "category:shop": "Cumpărături",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Turism",
     "category:tourism_services": "Turism",
     "category:transport": "Transport",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/ru.json b/lang/ru.json
index 7a2a36f..30e885e 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Полезные места",
     "category:alternative_routes": "Маршруты",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Обслуживание транспорта",
     "category:car_furniture": "Элементы дороги",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Услуги связи",
     "category:construction": "Места строительства",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Образование",
+    "category:electric_power": "Энергетика",
     "category:emergency": "Экстренные службы",
+    "category:energy": "",
     "category:financial": "Финансы",
     "category:gastro": "Общепит",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Досуг",
     "category:leisure_sport_shopping": "Досуг",
+    "category:memorial": "",
     "category:military": "Вооружённые силы",
     "category:mtb-routes": "",
     "category:natural": "Природные образования",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Прочее",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "Места",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "Энергетика",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Остановки и станции",
@@ -48,14 +61,17 @@
     "category:railway": "Железные дороги",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Религия",
+    "category:renewables": "",
     "category:residential": "Жилые районы",
     "category:resources": "Добыча ресурсов",
     "category:services": "Услуги",
     "category:shop": "Покупки",
     "category:special": "",
     "category:sport": "Спорт",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Туризм",
     "category:tourism_services": "Туризм",
     "category:transport": "Транспорт",
@@ -68,5 +84,9 @@
     "category:waste": "Переработка отходов",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": "Промышленность"
+    "category:works": "Промышленность",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/template.json b/lang/template.json
index 2f47544..c7952ee 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "",
     "category:alternative_routes": "",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "",
     "category:car_furniture": "",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "",
+    "category:electric_power": "",
     "category:emergency": "",
+    "category:energy": "",
     "category:financial": "",
     "category:gastro": "",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "",
     "category:leisure_sport_shopping": "",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "",
     "category:playgrounds": "",
     "category:post": "",
-    "category:power": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "",
+    "category:renewables": "",
     "category:residential": "",
     "category:resources": "",
     "category:services": "",
     "category:shop": "",
     "category:special": "",
     "category:sport": "",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "",
     "category:tourism_services": "",
     "category:transport": "",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/lang/uk.json b/lang/uk.json
index e9778eb..4e36f3f 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -4,11 +4,17 @@
     "category:alternative_amenities": "Amenities",
     "category:alternative_routes": "Маршрути",
     "category:buildings": "",
+    "category:buildings-entrances": "",
+    "category:buildings-figure-ground": "",
+    "category:buildings-height": "",
+    "category:buildings-start_date": "",
+    "category:buildings-type": "",
     "category:car_amenities": "Amenities",
     "category:car_furniture": "Street Furniture",
     "category:car_maxspeed": "",
     "category:car_routes": "",
     "category:children": "",
+    "category:coal": "",
     "category:communication": "Телекомунікації",
     "category:construction": "",
     "category:craft": "",
@@ -17,7 +23,9 @@
     "category:cycle_amenities": "",
     "category:cycle_routes": "",
     "category:education": "Освіта",
+    "category:electric_power": "",
     "category:emergency": "Швидка допомога",
+    "category:energy": "",
     "category:financial": "Фінанси",
     "category:gastro": "Гастрономія",
     "category:gastro-smoking": "",
@@ -27,11 +35,16 @@
     "category:index": "",
     "category:infrastructure": "",
     "category:internet": "",
+    "category:law": "",
     "category:leisure": "Дозвілля",
     "category:leisure_sport_shopping": "Дозвілля",
+    "category:memorial": "",
     "category:military": "",
     "category:mtb-routes": "",
     "category:natural": "Природне середовище",
+    "category:office": "",
+    "category:oil_gas": "",
+    "category:organisations": "",
     "category:other": "Інше",
     "category:outdoor": "",
     "category:phone": "",
@@ -39,7 +52,7 @@
     "category:places_geo": "Місцевість",
     "category:playgrounds": "Дитячий майданчик",
     "category:post": "",
-    "category:power": "",
+    "category:power_routes": "",
     "category:pt": "",
     "category:pt:routes": "",
     "category:pt:stops": "Зупинки та станції",
@@ -48,14 +61,17 @@
     "category:railway": "",
     "category:railway-electrification": "",
     "category:railway-infrastructure": "",
+    "category:railway-maxspeed": "",
     "category:railway-routes": "",
     "category:religion": "Релігія",
+    "category:renewables": "",
     "category:residential": "Житлова зона",
     "category:resources": "",
     "category:services": "Послуги",
     "category:shop": "Торгівля",
     "category:special": "",
     "category:sport": "Спорт. Інше.",
+    "category:swimming_bathing": "",
     "category:tourism_attractions": "Туризм",
     "category:tourism_services": "Туризм",
     "category:transport": "Транспорт",
@@ -68,5 +84,9 @@
     "category:waste": "",
     "category:water": "",
     "category:wikipedia": "",
-    "category:works": ""
+    "category:works": "",
+    "category:xmas": "",
+    "date format not understood": "",
+    "outdated feature": "",
+    "xmas:outdated-warning": ""
 }
diff --git a/law.json b/law.json
new file mode 100644
index 0000000..f670988
--- /dev/null
+++ b/law.json
@@ -0,0 +1,61 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Law",
+        "fr": "Services législatifs",
+        "pt-br": "Direito"
+    },
+    "query": {
+        "14": [
+            "(",
+            "node[amenity~\"^(courthouse)$\"];",
+            "way[amenity~\"^(courthouse)$\"];",
+            "relation[amenity~\"^(courthouse)$\"];",
+            "node[office~\"^(lawyer|notary)$\"];",
+            "way[office~\"^(lawyer|notary)$\"];",
+            "relation[office~\"^(lawyer|notary)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% if tags.amenity %}",
+            "  {% set key = 'amenity' %}",
+            "  {% set value = tags.amenity %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans(key, value) }}",
+        "markerSign": "{{ const[key ~ '=' ~ value].sign|raw }}"
+    },
+    "info": [
+        "<table>",
+        "{% for kv, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "amenity=courthouse": {
+            "sign": "<i class=\"fas fa-gavel\"></i>",
+            "zoom": 14
+        },
+        "office=lawyer": {
+            "sign": "⚖",
+            "zoom": 14
+        },
+        "office=notary": {
+            "sign": "<i class=\"fas fa-file-signature\"></i>",
+            "zoom": 14
+        }
+    }
+}
diff --git a/memorial.json b/memorial.json
index 30cc08c..0580731 100644
--- a/memorial.json
+++ b/memorial.json
@@ -2,7 +2,10 @@
     "type": "overpass",
     "name": {
         "de": "Denkmäler",
-        "en": "Memorials"
+        "en": "Memorials",
+        "fr": "Mémoriaux",
+        "hu": "Emlékművek",
+        "pt-br": "Memoriais"
     },
     "query": {
         "11": [
@@ -30,6 +33,46 @@
             "{% endif %}"
         ],
         "description": "{{ tagTransList('historic', value) }}",
+        "body": [
+            "<ul>",
+            "{% if tags.inscription %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('inscription') }}:</span>",
+            "   <span class='value'>{{ localizedTag(tags, 'inscription') }}</span>",
+            "  </li>",
+            "{% elseif attribute(tags, 'inscription:url') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-pencil-alt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'><a href=\"{{ attribute(tags, 'inscription:url') }}\">{{ keyTrans('inscription') }}</a></span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'historic:civilization') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-users\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('historic:civilization') }}:</span>",
+            "   <span class='value'>{{ tagTrans('historic:civilization', attribute(tags, 'historic:civilization')) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'memorial:conflict') %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-bolt\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('memorial:conflict') }}:</span>",
+            "   <span class='value'>{{ tagTransList('memorial:conflict', attribute(tags, 'memorial:conflict')) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.artist_name %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fa fa-palette\" aria-hidden=\"true\"></i>",
+            "   <span class='key'>{{ keyTrans('artist_name') }}:</span>",
+            "   <span class='value'>{{ enumerate(tags.artist_name) }}</span>",
+            "  </li>",
+            "{% endif %}",
+            "</ul>"
+        ],
         "markerSign": "{{ const[value].sign|raw }}"
     },
     "info": [
@@ -60,7 +103,7 @@
             "zoom": 14
         },
         "monument": {
-            "sign": "<img src='maki:monument?size=15'>",
+            "sign": "<img data-src='maki:monument?size=15'>",
             "zoom": 11
         }
     },
diff --git a/military.json b/military.json
index 4c4eade..39b276a 100644
--- a/military.json
+++ b/military.json
@@ -6,7 +6,7 @@
         "de": "Militär",
         "el": "Στρατιωτικό",
         "en": "Military",
-        "fr": "Militaire",
+        "fr": "Équipements et zones militaires",
         "hu": "Katonai objektumok",
         "it": "Militare",
         "ja": "軍事",
diff --git a/mtb-routes.json b/mtb-routes.json
index 08d1270..ffc2670 100644
--- a/mtb-routes.json
+++ b/mtb-routes.json
@@ -4,7 +4,7 @@
         "en": "Mountain bike routes",
         "fr": "Itinéraires de VTT",
         "hu": "Hegyikerékpáros útvonalak",
-        "pt-br": "Rotas mountain bike"
+        "pt-br": "Rotas de mountain bike"
     },
     "query": {
         "13": "relation[type=route][route=mtb]"
@@ -44,7 +44,7 @@
             "color": "#007fff",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/office.json b/office.json
new file mode 100644
index 0000000..b92ba34
--- /dev/null
+++ b/office.json
@@ -0,0 +1,47 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Ämter, Dienst- und Geschäftsstellen",
+        "en": "Offices",
+        "fr": "Bureaux",
+        "hu": "Irodák, hivatalok",
+        "pt-br": "Escritórios e agências"
+    },
+    "query": {
+        "14": "nwr[office]"
+    },
+    "feature": {
+        "description": [
+            "{{ tagTrans('office', tags.office) }}",
+            "{% if tags.office == 'government' and tags.government %}({{ tagTrans('government', tags.government) }}){% endif %}"
+        ],
+        "markerSign": "{{ const[tags.office]|raw }}"
+    },
+    "const": {
+        "government": "<i class='fas fa-landmark'></i>",
+        "company": "<i class='fas fa-building'></i>",
+        "estate_agent": "<i class='fas fa-home'></i>",
+        "insurance": "<i class='fas fa-file-signature'></i>",
+        "lawyer": "<i class='fas fa-gavel'></i>",
+        "educational_institution": "<i class='fas fa-school'></i>",
+        "administrative": "<i class='fas fa-landmark'></i>",
+        "telecommunication": "<i class='fas fa-phone'></i>",
+        "ngo": "<i class='fas fa-people-carry'></i>",
+        "quango": "<i class='fas fa-people-carry'></i>",
+        "association": "<i class='fas fa-people-carry'></i>",
+        "it": "<i class='fas fa-desktop'></i>",
+        "accountant": "<i class='fas fa-money-bill-alt'></i>",
+        "tax_advisor": "<i class='fas fa-money-bill-alt'></i>",
+        "employment_agency": "<i class='fas fa-user'></i>",
+        "research": "<i class='fas fa-flask'></i>",
+        "religion": "<i class='fas fa-pray'></i>",
+        "architect": "<i class='fas fa-torii-gate'></i>",
+        "financial": "<i class='fas fa-money-bill'></i>",
+        "newspaper": "<i class='fas fa-newspaper'></i>",
+        "political_party": "<i class='fas fa-flag'></i>",
+        "advertising_agency": "<i class='fas fa-ad'></i>",
+        "therapist": "<i class='fas fa-couch'></i>",
+        "travel_agent": "<i class='fas fa-plane-departure'></i>",
+        "publisher": "<i class='fas fa-book'></i>"
+    }
+}
diff --git a/oil_gas.json b/oil_gas.json
new file mode 100644
index 0000000..0f9acee
--- /dev/null
+++ b/oil_gas.json
@@ -0,0 +1,67 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Erdöl und Erdgas",
+        "en": "Petroleum and natural gas",
+        "fr": "Pétrole et gaz naturel",
+        "hu": "Kőolaj, földgáz",
+        "pt-br": "Petróleo e gás"
+    },
+    "query": {
+        "11": [
+            "(",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "way[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "relation[landuse=industrial][industrial~\"^(|.*;)(refinery)(|;.*)$\"];",
+            "way[waterway=offshore_field];",
+            "relation[waterway=offshore_field];",
+            "node[man_made~\"^(offshore_platform)$\"];",
+            "way[man_made~\"^(offshore_platform)$\"];",
+            "relation[man_made~\"^(offshore_platform)$\"];",
+            "node[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "way[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "relation[power~\"^(plant)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            ")"
+        ],
+        "13": [
+            "(",
+            "way[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(pipeline|goods_conveyor)$\"][substance~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "way[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "relation[landuse=industrial][industrial~\"^(|.*;)(oil|gas|lng|cng|multiphase|refinery|oil_refinery)(|;.*)$\"];",
+            "way[waterway=offshore_field];",
+            "relation[waterway=offshore_field];",
+            "node[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "node[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)$\"];",
+            "way[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)$\"];",
+            "way[man_made~\"^(storage_tank)$\"][contents~\"^(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "relation[man_made~\"^(petroleum_well|offshore_platform|gasometer|oil_tank|gas_cavern)(|;.*)$\"];",
+            "relation[man_made~\"^(storage_tank)$\"][contents~\"^(|.*;)(oil|gas|lng|cng|multiphase)(|;.*)$\"];",
+            "node[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "way[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            "relation[power~\"^(plant|generator)$\"][\"generator:source\"~\"^(|.*;)(oil|gas|diesel|gasoline)(|;.*)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": [
+            "{% if tags.man_made == 'pipeline' %}",
+            "{{ tagTrans('man_made', 'pipeline') }} ({{ tagTrans('substance', tags.substance) }})",
+            "{% elseif tags.man_made %}",
+            "{{ tagTrans('man_made', tags.man_made) }}",
+            "{% elseif tags.power == 'plant' %}",
+            "{{ tagTrans('power', 'plant') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.power == 'generator' %}",
+            "{{ tagTrans('power', 'generator') }} {% if attribute(tags, 'generator:source') %}({{ tagTransList('generator:source', attribute(tags, 'generator:source')) }}){% endif %}",
+            "{% elseif tags.waterway == 'offshore_field' %}",
+            "{{ tagTrans('waterway', tags.waterway) }}",
+            "{% elseif tags.landuse == 'industrial' %}",
+            "{{ tagTrans('landuse', tags.landuse) }} ({{ tagTrans('industrial', tags.industrial) }})",
+            "{% endif %}"
+        ],
+        "markerSymbol": null
+    }
+}
diff --git a/organisations.json b/organisations.json
new file mode 100644
index 0000000..1d73ea0
--- /dev/null
+++ b/organisations.json
@@ -0,0 +1,82 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Organisations",
+        "fr": "Organisations",
+        "pt-br": "Organizações"
+    },
+    "query": {
+        "13": [
+            "(",
+            "nwr[office~\"^(ngo|quango|political_party|association|charity)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set key = 'office' %}",
+            "{% set value = tags.office %}",
+            ""
+        ],
+        "description": "{{ tagTrans(key, value) }}",
+        "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}<br/>{% endif %}",
+        "markerSign": [
+            "{% set data = const[key ~ '=' ~ value] %}",
+            "{% if data %}",
+            "{{ data.sign|raw }}",
+            "{% endif %}"
+        ],
+        "priority": [
+            "{% set data = const[key ~ '=' ~ value] %}",
+            "{% if data %}",
+            "{{ data.priority }}",
+            "{% endif %}"
+        ]
+    },
+    "info": [
+        "<table>",
+        "{% for kv, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>",
+        "      {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "    </td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "office=ngo": {
+            "priority": 0,
+            "sign": "<i class='fas fa-users'></i>",
+            "zoom": 13
+        },
+        "office=quango": {
+            "priority": 0,
+            "sign": "<i class='fas fa-users'></i>",
+            "zoom": 13
+        },
+        "office=political_party": {
+            "priority": 0,
+            "sign": "<i class='fas fa-flag'></i>",
+            "zoom": 13
+        },
+        "office=association": {
+            "priority": 0,
+            "sign": "<i class='fas fa-people-carry'></i>",
+            "zoom": 13
+        },
+        "office=foundation": {
+            "priority": 0,
+            "sign": "<i class='fas fa-people-carry'></i>",
+            "zoom": 13
+        },
+        "office=charity": {
+            "priority": 0,
+            "sign": "<i class='fas fa-hands-helping'></i>",
+            "zoom": 13
+        }
+    }
+}
diff --git a/popupBody.html b/popupBody.html
index 63b8317..b3ead54 100644
--- a/popupBody.html
+++ b/popupBody.html
@@ -1,4 +1,12 @@
 <ul>
+{% set hasDescription = tagsPrefix(tags, 'description:') %}
+{% if tags.description or hasDescription %}
+<li class='hasSymbol'>
+  <i class="fa fa-info" aria-hidden="true"></i>
+  <span class='value'>{{ localizedTag(tags, 'description')|default(attribute(tags, 'description:' ~ hasDescription|keys[0])) }}</span>
+</li>
+{% endif %}
+
 {% set address = tagsPrefix(tags, 'addr:') %}
 {% if address %}
 <li class='hasSymbol'>
@@ -139,4 +147,20 @@
   <span class='value'><a href="https://{{ wikipedia[1] }}.wikipedia.org/wiki/{{ wikipedia[2]|replace({ ' ': '_' }) }}">{{ wikipedia[2] }}</a></span>
 {% endif %}
 
+{% if tags.start_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('start_date') }}:</span>
+   <span class='value'>{{ tags.start_date|osmFormatDate }}</span>
+  </li>
+{% endif %}
+
+{% if tags.opening_date %}
+  <li class='hasSymbol'>
+   <i class="fa fa-clock-o" aria-hidden="true"></i>
+   <span class='key'>{{ keyTrans('opening_date') }}:</span>
+   <span class='value'>{{ tags.opening_date|osmFormatDate }}</span>
+  </li>
+{% endif %}
+
 </ul>
diff --git a/power_routes.json b/power_routes.json
new file mode 100644
index 0000000..61c088e
--- /dev/null
+++ b/power_routes.json
@@ -0,0 +1,66 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Power routes",
+        "fr": "Réseaux électriques",
+        "hu": "Távvezetékek",
+        "pt-br": "Rotas de energia"
+    },
+    "query": {
+        "10": "relation[type=route][route=power]"
+    },
+    "members": true,
+    "feature": {
+        "pre": "{% set color = '#' ~ tags.operator|default('')|md5|slice(0, 6) %}",
+        "description": "{% if tags.operator %}{{ tags.operator }}{% endif %}",
+        "title": "{% if tags.ref and tags.name %}{{ tags.ref }} - {{ tags.name }}{% elseif tags.ref %}{{ tags.ref }}{% elseif tags.name %}{{ tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}",
+        "listMarkerSymbol": "{{ markerLine({ 'width': 4, 'color': color })|raw }}",
+        "markerSymbol": "",
+        "styles": ""
+    },
+    "memberFeature": {
+        "pre": [
+            "{% set refs = [] %}",
+            "{% set color = '#d41d8c' %}",
+            "{% if tags.ref %}",
+            "  {% for ref in tags.ref|split(';') %}",
+            "    {% set refs = refs|merge([ ref|trim ]) %}",
+            "  {% endfor %}",
+            "{% endif %}",
+            "",
+            "{% for master in masters %}",
+            "  {% if master.tags.operator %}",
+            "    {% set color = '#' ~ master.tags.operator|md5|slice(0, 6) %}",
+            "  {% endif %}",
+            "  {% if master.tags.ref %}",
+            "    {% set refs = refs|merge([ master.tags.ref ]) %}",
+            "  {% endif %}",
+            "{% endfor %}",
+            "",
+            "{% set refs = refs|unique|natsort({ insensitive: true }) %}"
+        ],
+        "body": [
+            "<h4>Routes</h4>",
+            "<ul>",
+            "{% for master in masters %}",
+            "  {% set _color = '#' ~ master.tags.operator|default('')|md5|slice(0, 6) %}",
+            "  <li data-object=\"{{ master.id }}\" style='list-style: none;'>",
+            "    <span class='markerParent'><div class='marker'>{{ markerLine({ width: 4, color: _color })|raw }}</div></span>",
+            "    <span class='title'>{% if master.tags.ref and master.tags.name %}{{ master.tags.ref }} - {{ master.tags.name|default(master.tags.ref) }}{% elseif master.tags.ref %}{{ master.tags.ref }}{% elseif master.tags.name %}{{ master.tags.name }}{% else %}{{ trans('unnamed') }}{% endif %}</span>",
+            "    <span class='description'>{{ master.tags.operator }}</span>",
+            "  </li>",
+            "{% endfor %}",
+            "</ul>"
+        ],
+        "listExclude": "1",
+        "style": {
+            "color": "{{ color }}",
+            "width": 4,
+            "opacity": 1,
+            "text": "{{ refs|join(' · ') }}             ",
+            "textRepeat": "1",
+            "textOffset": "12",
+            "textFontWeight": "bold"
+        }
+    }
+}
diff --git a/pt.json b/pt.json
index bf28e33..267ca54 100644
--- a/pt.json
+++ b/pt.json
@@ -3,6 +3,7 @@
     "name": {
         "de": "ÖV Karte",
         "en": "Public transport map",
+        "fr": "Carte des transports publics",
         "hu": "Tömegközlekedési térkép",
         "pt-br": "Mapa de transporte público"
     },
@@ -57,16 +58,22 @@
         ],
         "description": "{{ tagTrans('route', tags.route) }}",
         "body": [
-            "<h4>Stops</h4><ul>",
+            "<h4>{{ repoTrans('category:pt:stops') }}</h4><ul>",
             "{% for member in members %}",
             "{% if member.tags.highway == 'bus_stop' or member.tags.amenity == 'bus_station' or member.tags.amenity == 'ferry_terminal' or member.tags.railway == 'tram_stop' or member.tags.railway == 'halt' or member.tags.railway == 'station' or member.tags.aerialway == 'station' or member.tags.public_transport == 'stop_position' or member.role|slice(-4) == 'stop' %}",
-            "<li data-object='{{ member.id }}' data-sublayer='member'><b>{{ member.tags.name|default(member.id) }}</li>",
+            "<li data-object='{{ member.id }}' data-sublayer='member'><b>{% if member.tags %}{{ member.tags.name|default(trans('unknown')) }}{% else %}<i>{{ trans('loading') }}</i>{% endif %}</li>",
             "{% endif %}",
             "{% endfor %}",
             "</ul>"
         ],
         "markerSymbol": "",
         "styles": "",
+        "style:hover": {
+            "width": "0"
+        },
+        "style:selected": {
+            "width": "0"
+        },
         "listStopsExclude": "true",
         "listRoutesMarkerSign": "{{ const[tags.route].sign|raw }}",
         "listRoutesMarkerSymbol": "{{ markerCircle({fillColor:const[tags.route].color})|raw }}",
@@ -82,6 +89,10 @@
             "{% set isWay = false %}",
             "{% set aRoute = null %}",
             "{% set refs = [] %}",
+            "{% set dirForward = false %}",
+            "{% set dirBackward = false %}",
+            "{% set hover = false %}",
+            "{% set selected = false %}",
             "{% for master in masters %}",
             "  {% if master.tags.public_transport == 'stop_area' %}",
             "    {% set stopName = master.tags.name %}",
@@ -97,7 +108,14 @@
             "    {% if master.tags.ref %}",
             "      {% set refs = refs|merge([ master.tags.ref ]) %}",
             "    {% endif %}",
+            "    {% if master.dir == 'forward' %}{% set dirForward = true %}",
+            "    {% elseif master.dir == 'backward' %}{% set dirBackward = true %}",
+            "    {% else %}{% set dirForward = true %}{% set dirBackward = true %}",
+            "    {% endif %}",
             "  {% endif %}",
+            "",
+            "  {% if master.flags.hover %}{% set hover = master.dir|default('both') %}{% endif %}",
+            "  {% if master.flags.selected %}{% set selected = master.dir|default('both') %}{% endif %}",
             "{% endfor %}",
             "",
             "{% set refs = refs|unique|natsort({ insensitive: true }) %}",
@@ -105,7 +123,7 @@
         ],
         "title": "{% if isStop %}{{ tags.name|default(stopName)|default(id) }}{% endif %}",
         "body": [
-            "<h4>Routes</h4>",
+            "<h4>{{ repoTrans('category:pt:routes') }}</h4>",
             "<ul class='overpass-layer-list'>",
             "{% for master in masters %}",
             "  {% if master.tags.public_transport != 'stop_area' %}",
@@ -118,25 +136,78 @@
             "{% endfor %}",
             "</ul>"
         ],
-        "styles": "{% if isStop and stopCount > 0 %}stop{% elseif isWay %}way{% else %}{% endif %}",
+        "markerSign": " ",
+        "markerSymbol": "{% if isStop and stopCount > 0 %}{% if hover or selected %}{{ markerPointer({ })|raw }}{% endif %}{% endif %}",
+        "styles": "{% if isStop and stopCount > 0 %}stop{% elseif isWay %}casing,way{% if hover %},hover{% endif %}{% if selected %},selected{% endif %}{% endif %}",
+        "style:hover": {
+            "pane": "hover",
+            "width": "4",
+            "color": "black",
+            "lineCap": "{% if hover == 'forward' or hover == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if hover == 'forward' or hover == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if hover == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if hover == 'forward' or hover == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if hover == 'forward' or hover == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if hover == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if hover == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "black",
+            "pattern-path-fillOpacity": "1"
+        },
+        "style:selected": {
+            "pane": "selected",
+            "width": "4",
+            "color": "#3f3f3f",
+            "lineCap": "{% if selected == 'forward' or selected == 'backward' %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if selected == 'forward' or selected == 'backward' %}27,8{% endif %}",
+            "dashOffset": "{% if selected == 'backward' %}28{% else %}0{% endif %}",
+            "noClip": "{% if selected == 'forward' or selected == 'backward' %}true{% else %}false{% endif %}",
+            "pattern": "{% if selected == 'forward' or selected == 'backward' %}arrowHead{% endif %}",
+            "pattern-offset": "{% if selected == 'backward' %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if selected == 'backward' %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "#3f3f3f",
+            "pattern-path-fillOpacity": "1"
+        },
         "listStopsMarkerSign": null,
         "listStopsMarkerSymbol": "{{ markerCircle({ width: 5, color: color, fillOpacity: '1', radius: 3 })|raw }}",
         "listStopsExclude": "{{ not isStop or stopCount == 0 }}",
-        "listStopsTitle": "{{ tags.name|default(stopName)|default(id) }}",
-        "listStopsDescription": "{{ refs|join(' ') }}",
+        "listStopsTitle": "{% if tags %}{{ tags.name|default(stopName)|default(trans('unknown')) }}{% else %}<li>{{ trans('loading') }}</li>{% endif %}",
+        "listStopsDescription": "{{ refs|join(' · ') }}",
         "listRoutesExclude": "true",
+        "style:stop": {
+            "width": "4",
+            "color": "{{ color|default('#ff0000') }}",
+            "radius": "3",
+            "zIndex": "1"
+        },
         "style:way": {
-            "width": "3",
+            "width": "4",
             "color": "{{ color|default('#ff0000') }}",
-            "text": "{{ refs|join('  ') }}             ",
+            "opacity": "1",
+            "lineCap": "{% if not dirForward or not dirBackward %}butt{% else %}round{% endif %}",
+            "dashArray": "{% if not dirForward or not dirBackward %}27,8{% endif %}",
+            "dashOffset": "{% if dirBackward %}28{% else %}0{% endif %}",
+            "noClip": "{% if not dirForward or not dirBackward %}true{% else %}false{% endif %}",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
+            "pattern": "{% if dirForward and dirBackward %}{% else %}arrowHead{% endif %}",
+            "pattern-offset": "{% if dirBackward %}4{% else %}30.5{% endif %}",
+            "pattern-repeat": "35",
+            "pattern-polygon": "true",
+            "pattern-pixelSize": "9",
+            "pattern-angleCorrection": "{% if dirBackward %}180{% else %}0{% endif %}",
+            "pattern-path-width": "0",
+            "pattern-path-color": "{{ color|default('#ff0000') }}",
+            "pattern-path-fillOpacity": "1",
             "textFontWeight": "bold"
-        },
-        "style:stop": {
-            "width": "5",
-            "color": "{{ color|default('#ff0000') }}",
-            "radius": "3"
         }
     },
     "info": [
diff --git a/public.json b/public.json
index cf28f62..448fb31 100644
--- a/public.json
+++ b/public.json
@@ -7,13 +7,13 @@
         "el": "Δημόσιες Υπηρεσίες",
         "en": "Public Services",
         "et": "Kommunaalteenused",
-        "fr": "Services Publics",
+        "fr": "Services et équipements publics",
         "hu": "Közszolgáltatások",
         "it": "Servizi pubblici",
         "ja": "公共サービス",
         "nl": "Openbare diensten",
         "pt": "Serviços públicos",
-        "pt-br": "Serviços públicos",
+        "pt-br": "Utilidade pública",
         "ro": "Servicii publice",
         "ru": "Общественные места",
         "uk": "Громадські місця"
@@ -21,37 +21,51 @@
     "query": {
         "12": [
             "(",
-            "node[amenity~'^(courthouse|embassy|public_building|townhall)$'];",
-            "way[amenity~'^(courthouse|embassy|public_building|townhall)$'];",
-            "relation[amenity~'^(courthouse|embassy|public_building|townhall)$'];",
+            "node[amenity~'^(embassy|public_building|townhall)$'];",
+            "way[amenity~'^(embassy|public_building|townhall)$'];",
+            "relation[amenity~'^(embassy|public_building|townhall)$'];",
             "node[amenity=recycling][recyling_type=centre];",
             "way[amenity=recycling][recyling_type=centre];",
             "relation[amenity=recycling][recyling_type=centre];",
+            "nwr[office~\"^(government|administration)$\"];",
             ");"
         ],
         "16": [
             "(",
-            "node[amenity~'^(courthouse|embassy|public_building|townhall|clock|drinking_water|recycling|toilets)$'];",
-            "way[amenity~'^(courthouse|embassy|public_building|townhall|recycling|toilets)$'];",
-            "relation[amenity~'^(courthouse|embassy|public_building|townhall|recycling|toilets)$'];",
+            "node[amenity~'^(embassy|public_building|townhall|clock|drinking_water|recycling|toilets)$'];",
+            "way[amenity~'^(embassy|public_building|townhall|recycling|toilets)$'];",
+            "relation[amenity~'^(embassy|public_building|townhall|recycling|toilets)$'];",
             "node[drinking_water];",
+            "nwr[office~\"^(government|administration)$\"];",
             ");"
         ]
     },
     "feature": {
         "pre": [
             "{% if tags.drinking_water %}",
+            "{% set key = 'amenity' %}",
             "{% set value = 'drinking_water' %}",
-            "{% else %}",
+            "{% elseif tags.amenity %}",
+            "{% set key = 'amenity' %}",
             "{% set value = tags.amenity %}",
+            "{% elseif tags.office %}",
+            "{% set key = 'office' %}",
+            "{% set value = tags.office %}",
             "{% endif %}"
         ],
         "title": "{{ tags.name|default(tags.operator)|default(tagTrans('amenity', value)) }}",
-        "description": "{{ tagTrans('amenity', value) }}",
+        "description": [
+            "{% if key == 'office' %}",
+            "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}"
+        ],
         "body": "{% if tags.operator %}{{ keyTrans('operator') }}: {{ tags.operator }}<br/>{% endif %}",
         "markerSign": [
-            "{% if const[value] %}",
-            "{{ const[value]|raw }}",
+            "{% set kv = key ~ '=' ~ value %}",
+            "{% if const[kv] %}",
+            "{{ const[kv]|raw }}",
             "{% endif %}"
         ]
     },
@@ -66,13 +80,14 @@
         "</table>"
     ],
     "const": {
-        "courthouse": "⚖",
-        "clock": "<i class='fa fa-clock-o' aria-hidden='true'></i>",
-        "drinking_water": "<img src='maki:drinking-water'>",
-        "embassy": "<img src='maki:embassy'>",
-        "public_building": "<img src='maki:building'>",
-        "recycling": "<img src='maki:recycling'>",
-        "toilets": "<img src='maki:toilet'>",
-        "townhall": "<img src='maki:town-hall'>"
+        "amenity=clock": "<i class='fa fa-clock-o' aria-hidden='true'></i>",
+        "amenity=drinking_water": "<img data-src='maki:drinking-water'>",
+        "amenity=embassy": "<img data-src='maki:embassy'>",
+        "amenity=public_building": "<img data-src='maki:building'>",
+        "amenity=recycling": "<img data-src='maki:recycling'>",
+        "amenity=toilets": "<img data-src='maki:toilet'>",
+        "amenity=townhall": "<img data-src='maki:town-hall'>",
+        "office=administration": "<img data-src='maki:town-hall'>",
+        "office=government": "<img data-src='maki:town-hall'>"
     }
 }
diff --git a/railway-maxspeed.json b/railway-maxspeed.json
new file mode 100644
index 0000000..1c756f2
--- /dev/null
+++ b/railway-maxspeed.json
@@ -0,0 +1,166 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Eisenbahn Höchstgeschwindigkeiten",
+        "en": "Railway Maxspeed",
+        "fr": "Limites de vitesse",
+        "hu": "Sebességkorlátozás",
+        "pt": "Velocidade máxima",
+        "pt-br": "Velocidade máxima"
+    },
+    "query": {
+        "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
+        "14": "way[railway][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'];"
+    },
+    "feature": {
+        "pre": [
+            "{% set maxspeedKmh = null %}",
+            "{% set maxspeed = null %}",
+            "{% set unit = null %}",
+            "",
+            "{% if tags.maxspeed is defined %}",
+            "  {% if tags.maxspeed|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedKmh = tags.maxspeed %}",
+            "    {% set maxspeed = tags.maxspeed %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif tags.maxspeed|matches( \"(^[0-9]+) mph$\") %}",
+            "    {% set m = tags.maxspeed|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeed = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'maxspeed:forward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedFKmh = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set maxspeedF = attribute(tags, 'maxspeed:forward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:forward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:forward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedFKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedF = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'maxspeed:backward') is defined %}",
+            "  {% if attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+$\") %}",
+            "    {% set maxspeedBKmh = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set maxspeedB = attribute(tags, 'maxspeed:backward') %}",
+            "    {% set unit = \"km/h\" %}",
+            "  {% elseif attribute(tags, 'maxspeed:backward')|matches(\"^[0-9]+ mph$\") %}",
+            "    {% set m = attribute(tags, 'maxspeed:backward')|matches(\"(^[0-9]+) mph$\") %}",
+            "    {% set maxspeedBKmh = m[1] * 1.60934 %}",
+            "    {% set maxspeedB = m[1] %}",
+            "    {% set unit = \"mph\" %}",
+            "  {% endif %}",
+            "{% endif %}",
+            "",
+            "{% if not maxspeedKmh %}",
+            "{% set color = \"#404040\" %}",
+            "{% else %}",
+            "{% set color = colorInterpolate(const.colorMap, (maxspeedKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedFKmh %}",
+            "{% set colorF = colorInterpolate(const.colorMap, (maxspeedFKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}",
+            "",
+            "{% if maxspeedBKmh %}",
+            "{% set colorB = colorInterpolate(const.colorMap, (maxspeedBKmh - const.offsetColorSpeed) / const.highestColorSpeed) %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if maxspeedF or maxspeedB %}",
+            "<span style='color: {{ colorB }}'>{{ maxspeedB|default(trans('unknown')) }}</span> / <span style='color: {{ colorF }}'>{{ maxspeedF|default(trans('unknown')) }}</span> {{ unit }}",
+            "{% elseif maxspeed %}",
+            "<span style='color: {{ color }}'>{{ maxspeed }} {{ unit }}</span>",
+            "{% elseif tags.maxspeed %}",
+            "{{ tags.maxspeed }}",
+            "{% else %}",
+            "{{ trans('unknown') }}",
+            "{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "line",
+        "styles": "{% if maxspeedB or maxspeedF %}left,right,default{% else %}default{% endif %}",
+        "style": {
+            "width": "{% if maxspeedB or maxspeedF %}0{% else %}4{% endif %}",
+            "color": "{{ color }}",
+            "text": [
+                "{% if maxspeedB or maxspeedF %}",
+                "  {% if maxspeedB %}🡸 {{ maxspeedB }} {% endif %}|{% if maxspeedF %} {{ maxspeedF }} 🡺{% endif %}       ",
+                "{% else %}",
+                "  {{ maxspeed }}         ",
+                "{% endif %}"
+            ],
+            "textRepeat": "1",
+            "textOffset": "4",
+            "textFontWeight": "bold"
+        },
+        "style:left": {
+            "width": "2",
+            "color": "{{ colorB|default('#404040') }}",
+            "offset": "-1"
+        },
+        "style:right": {
+            "width": "2",
+            "color": "{{ colorF|default('#404040') }}",
+            "offset": "1"
+        }
+    },
+    "const": {
+        "colorMap": [
+            "#00af00",
+            "#ff7f00",
+            "#ff0000",
+            "#af00af"
+        ],
+        "highestColorSpeed": 300,
+        "offsetColorSpeed": 20
+    },
+    "info": [
+        "<div style='display: inline-block'>",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({}))|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(25, 280, 25) %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": i }))|raw }}</td>",
+        "    <td>{{ i }}km/h</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": 300 }))|raw }}</td>",
+        "    <td>≥300km/h</td>",
+        "  </tr>",
+        "</table>",
+        "</div>",
+        "",
+        "<div style='display: inline-block'>",
+        "<table>",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({}))|raw }}</td>",
+        "    <td colspan>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(15, 150, 15) %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": (i * 1.60934)|round }))|raw }}</td>",
+        "    <td>{{ i }}mph</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": (175 * 1.60934)|round }))|raw }}</td>",
+        "    <td>175mph</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerLine(evaluate({ \"maxspeed\": (200 * 1.60934)|round }))|raw }}</td>",
+        "    <td>≥200mph</td>",
+        "  </tr>",
+        "</table>",
+        "</div>"
+    ]
+}
diff --git a/railway-routes.json b/railway-routes.json
index 8745895..f06a1d3 100644
--- a/railway-routes.json
+++ b/railway-routes.json
@@ -51,7 +51,7 @@
             "color": "{{ color }}",
             "width": 4,
             "opacity": 1,
-            "text": "{{ refs|join('  ') }}             ",
+            "text": "{{ refs|join(' · ') }}             ",
             "textRepeat": "1",
             "textOffset": "12",
             "textFontWeight": "bold"
diff --git a/religion.json b/religion.json
index 967b59e..b3e2c5a 100644
--- a/religion.json
+++ b/religion.json
@@ -27,6 +27,19 @@
             "way[landuse~\"^(cemetery)$\"];",
             "relation[landuse~\"^(cemetery)$\"];",
             ")"
+        ],
+        "14": [
+            "(",
+            "node[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
+            "way[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
+            "relation[amenity~\"^(place_of_worship|grave_yard|crematorium)$\"];",
+            "way[landuse~\"^(cemetery)$\"];",
+            "relation[landuse~\"^(cemetery)$\"];",
+            "node[historic~\"^wayside_(cross|shrine|chapel)$\"];",
+            "way[historic~\"^wayside_(cross|shrine|chapel)$\"];",
+            "relation[historic~\"^wayside_(cross|shrine|chapel)$\"];",
+            "nwr[office~\"^(parish|religion)$\"];",
+            ")"
         ]
     },
     "feature": {
@@ -34,6 +47,12 @@
             "{% if tags.landuse == 'cemetery' %}",
             "{% set key = 'landuse' %}",
             "{% set value = tags.landuse %}",
+            "{% elseif tags.historic in [ 'wayside_cross', 'wayside_shrine', 'wayside_chapel' ] %}",
+            "{% set key = 'historic' %}",
+            "{% set value = tags.historic %}",
+            "{% elseif tags.office %}",
+            "{% set key = 'office' %}",
+            "{% set value = tags.office %}",
             "{% else %}",
             "{% set key = 'amenity' %}",
             "{% set value = tags.amenity %}",
diff --git a/renewables.json b/renewables.json
new file mode 100644
index 0000000..19e9f42
--- /dev/null
+++ b/renewables.json
@@ -0,0 +1,40 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Erneuerbare Energien",
+        "en": "Renewables",
+        "fr": "Énergies renouvelables",
+        "hu": "Megújuló energia",
+        "pt-br": "Renováveis"
+    },
+    "query": {
+        "11": [
+            "(",
+            "node[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "way[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "relation[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            ")",
+            ""
+        ],
+        "15": [
+            "(",
+            "node[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "way[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "relation[power~\"^(plant)$\"][\"plant:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "node[power~\"^(generator)$\"][\"generator:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "way[power~\"^(generator)$\"][\"generator:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            "relation[power~\"^(generator)$\"][\"generator:source\"~\"^(wind|solar|biomass|hydro|geothermal|biogas|biofuel)$\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "description": "{{ tagTrans('power', tags.power) }}{% set x='generator:source' %}{% if tags[x] %}, {{ tagTransList('generator:source', tags[x]) }}{% endif %}",
+        "popupDescription": "{{ tagTrans('power', tags.power) }}",
+        "body": [
+            "{% set x='generator:source' %}{% if tags[x] %}<br/>{{ keyTrans('generator:source') }}: {{ tagTransList('generator:source', tags[x]) }}{% endif %}",
+            "{% set x='generator:method' %}{% if tags[x] %}<br/>{{ keyTrans('generator:method') }}: {{ tagTransList('generator:method', tags[x]) }}{% endif %}",
+            "{% set x='generator:type' %}{% if tags[x] %}<br/>{{ tagTransList('generator:type') }}: {{ tagTrans('generator:type', tags[x]) }}{% endif %}"
+        ],
+        "priority": "{% if tags.power == 'plant' %}0{% elseif tags.power == 'generator' or tags.power == 'line' %}1{% elseif tags.power == 'substation' %}2{% else %}3{% endif %}"
+    }
+}
diff --git a/residential.json b/residential.json
index 9bacc7d..d58ed9e 100644
--- a/residential.json
+++ b/residential.json
@@ -35,6 +35,12 @@
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('landuse', tags.landuse) }}"
+        "description": [
+            "{{ tagTrans('landuse', tags.landuse) }}",
+            "",
+            "{% if tags.residential %}",
+            "({{ tagTransList('residential', tags.residential) }})",
+            "{% endif %}"
+        ]
     }
 }
diff --git a/swimming_bathing.json b/swimming_bathing.json
new file mode 100644
index 0000000..def3505
--- /dev/null
+++ b/swimming_bathing.json
@@ -0,0 +1,143 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Schwimmen und Baden",
+        "en": "Swimming and bathing",
+        "fr": "Natation, baignade et bains",
+        "hu": "Fürdőzés, úszás",
+        "pt-br": "Natação e banho"
+    },
+    "query": {
+        "13": [
+            "(",
+            "nwr[leisure=swimming_area];",
+            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(beach)\"];",
+            "nwr[leisure~\"^(water_park|beach_resort)$\"];",
+            "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[amenity=public_bath];",
+            "nwr[tourism=spa_resort];",
+            ")"
+        ],
+        "16": [
+            "(",
+            "nwr[leisure=swimming_area];",
+            "nwr[natural~\"^(water)\"][sport~\"^(|.*;)swimming(.*|)$\"];",
+            "nwr[natural~\"^(beach)\"];",
+            "nwr[leisure~\"^(water_park|beach_resort)$\"];",
+            "nwr[leisure=sports_centre][sport~\"^(|.*;)swimming(;.*|)$\"];",
+            "nwr[amenity~\"^(public_bath|shower)$\"];",
+            "nwr[tourism=spa_resort];",
+            "",
+            "nwr[leisure=swimming_pool][access!=private];",
+            "nwr[leisure=sauna];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set k = null %}{% set v = null %}{% set append = null %}",
+            "{% if tags.amenity == 'public_bath' %}",
+            "  {% set k = 'amenity' %}",
+            "  {% set v = 'public_bath' %}",
+            "  {% if attribute(tags, 'bath:type') %}{% set append = tagTrans('bath:type', attribute(tags, 'bath:type')) %}{% endif %}",
+            "{% elseif tags.amenity == 'shower' %}",
+            "  {% set k = 'amenity' %}",
+            "  {% set v = 'shower' %}",
+            "{% elseif tags.tourism == 'spa_resort' %}",
+            "  {% set k = 'tourism' %}",
+            "  {% set v = tags.tourism %}",
+            "{% elseif tags.leisure == 'sauna' %}",
+            "  {% set k = 'leisure' %}",
+            "  {% set v = tags.leisure %}",
+            "  {% if tags.sauna and tags.sauna != 'yes' %}{% set append = tagTransList('sauna', tags.sauna) %}{% endif %}",
+            "{% elseif tags.leisure == 'sports_centre' %}",
+            "  {% set k = 'leisure' %}",
+            "  {% set v = tags.leisure %}",
+            "  {% set append = tagTrans('sport', 'swimming') %}",
+            "{% elseif tags.leisure %}",
+            "  {% set k = 'leisure' %}",
+            "  {% set v = tags.leisure %}",
+            "{% elseif tags.natural %}",
+            "  {% set k = 'natural' %}",
+            "  {% set v = tags.natural %}",
+            "  {% if tags.sport %}{% set append = tagTrans('sport', 'swimming') %}{% endif %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{{ tagTrans(k, v) }}",
+            "{% if append %}({{ append }}){% endif %}"
+        ],
+        "markerSign": "{{ const[k ~ '=' ~ v].sign|raw }}",
+        "priority": "{% if tags.name %}0{% else %}1{% endif %}"
+    },
+    "info": [
+        "<table>",
+        "{% for value, data in const %}",
+        "{% if data.zoom <= map.zoom %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td title=\"{% if data.taginfo %}{{ data.taginfo }}{% else %}{{ value }}{% endif %}\">",
+        "      {{ keyTrans(value) }}",
+        "      {% if data.append %}({{ trans(data.append) }}){% endif %}",
+        "    </td>",
+        "  </tr>",
+        "{% endif %}",
+        "{% endfor %}",
+        "</table>"
+    ],
+    "const": {
+        "leisure=swimming_area": {
+            "zoom": 13,
+            "sign": "<img data-src='maki:swimming?size=11&fill=blue'>"
+        },
+        "leisure=water_park": {
+            "zoom": 13,
+            "sign": "<img data-src='maki:swimming'>"
+        },
+        "leisure=beach_resort": {
+            "zoom": 13,
+            "sign": "<img data-src='temaki:beach'>"
+        },
+        "leisure=sports_centre": {
+            "zoom": 13,
+            "append": "tag:sport=swimming",
+            "taginfo": "leisure=swimming_area, sport=swimming",
+            "sign": "<img data-src='maki:basketball'>"
+        },
+        "natural=water": {
+            "zoom": 13,
+            "append": "tag:sport=swimming",
+            "taginfo": "natural=water, sport=swimming",
+            "sign": "<i style='color: blue' class=\"fas fa-water\"></i>"
+        },
+        "natural=beach": {
+            "zoom": 13,
+            "sign": "<img data-src='temaki:beach?fill=green'>"
+        },
+        "amenity=public_bath": {
+            "zoom": 13,
+            "taginfo": "amenity=public_bath, bath:type=*",
+            "sign": "<i class=\"fa fa-bath\" style='color: black' aria-hidden=\"true\"></i>"
+        },
+        "tourism=spa_resort": {
+            "zoom": 13,
+            "sign": "<i class=\"fa fa-bath\" style='color: blue' aria-hidden=\"true\"></i>"
+        },
+        "leisure=swimming_pool": {
+            "zoom": 16,
+            "append": "tag:access!=private",
+            "taginfo": "leisure=swimming_pool, access!=private",
+            "sign": "<i style='font-size: 80%; color: black;' class='fas fa-swimming-pool'></i>"
+        },
+        "leisure=sauna": {
+            "zoom": 16,
+            "taginfo": "leisure=sauna, sauna:type=*",
+            "sign": "<i class=\"fa fa-thermometer-full\" aria-hidden=\"true\"></i>"
+        },
+        "amenity=shower": {
+            "zoom": 16,
+            "sign": "🚿 "
+        }
+    }
+}
diff --git a/tourism_attractions.json b/tourism_attractions.json
index 7fdfea7..d69b2b4 100644
--- a/tourism_attractions.json
+++ b/tourism_attractions.json
@@ -49,12 +49,12 @@
     "const": {
         "aquarium": "🐟",
         "artwork": "🎨 ",
-        "attraction": "<img src='maki:attraction'>",
+        "attraction": "<img data-src='maki:attraction'>",
         "gallery": "🖼",
-        "museum": "<img src='maki:museum'>",
-        "picnic_site": "<img src='maki:picnic-site'>",
-        "theme_park": "<img src='maki:amusement-park'>",
-        "viewpoint": "<i class='fa fa-eye' aria-hidden='true'></i>",
+        "museum": "<img data-src='maki:museum'>",
+        "picnic_site": "<img data-src='maki:picnic-site'>",
+        "theme_park": "<img data-src='maki:amusement-park'>",
+        "viewpoint": "<i class='fas fa-eye' aria-hidden='true'></i>",
         "zoo": "🦁"
     }
 }
diff --git a/tourism_services.json b/tourism_services.json
index 721916e..4901f18 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -8,13 +8,13 @@
         "en": "Tourism",
         "et": "Turism",
         "fr": "Tourisme",
-        "hu": "Turisztikai szolgáltatások",
+        "hu": "Szálláshelyek, turisztikai információk",
         "it": "Turismo",
         "ja": "観光",
         "nl": "Toerisme",
         "pl": "Turystyka",
         "pt": "Turismo",
-        "pt-br": "Serviços de turismo",
+        "pt-br": "Serviços turísticos",
         "ro": "Turism",
         "ru": "Туризм",
         "uk": "Туризм"
@@ -25,6 +25,7 @@
             "node[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
             "way[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
             "relation[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|motel|wilderness_hut)$\"];",
+            "nwr[office~\"^(guide|tourism|tourist_accommodation|camping)$\"];",
             ")"
         ],
         "16": [
@@ -32,67 +33,111 @@
             "node[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
             "way[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
             "relation[tourism~\"^(alpine_hut|apartment|camp_site|caravan_site|chalet|guest_house|hostel|hotel|information|motel|wilderness_hut)$\"];",
+            "nwr[office~\"^(guide|tourism|tourist_accommodation|camping)$\"];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTrans('tourism', tags.tourism) }}",
-        "markerSign": "{{ const[tags.tourism].sign|raw }}"
+        "pre": [
+            "{% if tags.tourism %}",
+            "  {% set key = 'tourism' %}",
+            "  {% set value = tags.tourism %}",
+            "{% else %}",
+            "  {% set key = 'office' %}",
+            "  {% set value = tags.office %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if key == 'office' %}",
+            "  {{ keyTrans('office') }} ({{ tagTrans('office', tags.office) }})",
+            "{% else %}",
+            "  {{ tagTrans(key, value) }}",
+            "{% endif %}"
+        ],
+        "markerSign": [
+            "{% set data = const[key ~ '=' ~ value] %}",
+            "{% if data %}",
+            "{{ data.sign|raw }}",
+            "{% endif %}"
+        ]
     },
     "info": [
         "<table>",
-        "{% for value, data in const %}",
+        "{% for kv, data in const %}",
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('tourism', value) }}</td>",
+        "    <td>",
+        "      {% if kv|split('=')[0] == 'office' %}",
+        "        {{ keyTrans('office') }}",
+        "        ({{ tagTrans('office', kv|split('=')[1]) }})",
+        "      {% else %}",
+        "        {{ tagTrans(kv|split('=')[0], kv|split('=')[1]) }}",
+        "      {% endif %}",
+        "    </td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
         "</table>"
     ],
     "const": {
-        "alpine_hut": {
+        "tourism=alpine_hut": {
             "sign": "🛌",
             "zoom": 13
         },
-        "apartment": {
+        "tourism=apartment": {
             "sign": "🛌",
             "zoom": 13
         },
-        "camp_site": {
+        "tourism=camp_site": {
             "sign": "⛺",
             "zoom": 13
         },
-        "caravan_site": {
+        "tourism=caravan_site": {
             "sign": "⛺",
             "zoom": 13
         },
-        "chalet": {
+        "tourism=chalet": {
             "sign": "🛌",
             "zoom": 13
         },
-        "guest_house": {
+        "tourism=guest_house": {
             "sign": "🛌",
             "zoom": 13
         },
-        "hostel": {
+        "tourism=hostel": {
             "sign": "🛌",
             "zoom": 13
         },
-        "hotel": {
+        "tourism=hotel": {
             "sign": "🛌",
             "zoom": 13
         },
-        "motel": {
+        "tourism=motel": {
             "sign": "🛌",
             "zoom": 13
         },
-        "wilderness_hut": {
+        "tourism=wilderness_hut": {
             "sign": "",
             "zoom": 13
         },
-        "information": {
+        "office=tourism": {
+            "sign": "<i class=\"fas fa-info-circle\"></i>",
+            "zoom": 13
+        },
+        "office=guide": {
+            "sign": "<i class=\"fas fa-flag\"></i>",
+            "zoom": 13
+        },
+        "office=tourist_accommodation": {
+            "sign": "🛌",
+            "zoom": 13
+        },
+        "office=camping": {
+            "sign": "⛺",
+            "zoom": 13
+        },
+        "tourism=information": {
             "sign": "ℹ️",
             "zoom": 16
         }
diff --git a/transport_alternative.json b/transport_alternative.json
index 32278c7..8736ab1 100644
--- a/transport_alternative.json
+++ b/transport_alternative.json
@@ -4,7 +4,7 @@
         "cs": "Alternativní (Cyklistika, Pěší turistika, ...)",
         "el": "Εναλλακτικά (ποδηλασία, ορειβασία,...)",
         "et": "Alternatiivne (jalgrattasõit, matkamine, ...)",
-        "fr": "Alternatif (Cyclisme, Randonnée, ...)",
+        "fr": "Alternatif (cyclisme, randonnée, ...)",
         "hu": "Alternatív (Kerékpár, Túra)",
         "it": "Alternativi (bicicletta, camminate, ...)",
         "ja": "その他交通 (サイクリング、ハイキング、...)",
diff --git a/xmas.json b/xmas.json
new file mode 100644
index 0000000..ed0f023
--- /dev/null
+++ b/xmas.json
@@ -0,0 +1,95 @@
+{
+    "type": "overpass",
+    "name": {
+        "de": "Weihnachten",
+        "en": "Christmas",
+        "fr": "Noël",
+        "hu": "Karácsony",
+        "pt-br": "Natal"
+    },
+    "query": {
+        "13": [
+            "(",
+            "node[\"xmas:feature\"];",
+            "way[\"xmas:feature\"];",
+            "relation[\"xmas:feature\"];",
+            ")"
+        ]
+    },
+    "feature": {
+        "pre": [
+            "{% set isCurrent = meta.timestamp >= \"now\"|date_modify('-10 month')|date('Y') %}",
+            "{% set bgColor = isCurrent ? '#f2756a' : 'red' %}"
+        ],
+        "title": "{{ attribute(tags, \"xmas:name\")|default(trans(\"unnamed\")) }}",
+        "description": "{{ tagTransList(\"xmas:feature\", attribute(tags, \"xmas:feature\")) }}",
+        "body": [
+            "{% if not isCurrent %}",
+            "<div style='border: 1px solid red; padding: 2px; margin-bottom: 2px;'>{{ repoTrans('xmas:outdated-warning') }}</div>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:location') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-globe\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>{{ keyTrans('location') }}:</span>",
+            "  <span class='value'>",
+            "    {{ attribute(tags, 'xmas:location') }}",
+            "  </span>",
+            "</li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:day_date') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-clock-o\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>Open:</span>",
+            "  <span class='value'>",
+            "    {{ attribute(tags, 'xmas:day_date') }}",
+            "  </span>",
+            "</li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:opening_hours') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-clock-o\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>{{ keyTrans('opening_hours') }}:</span>",
+            "  <span class='value'>",
+            "    {{ attribute(tags, 'xmas:opening_hours') }}",
+            "  </span>",
+            "</li>",
+            "{% endif %}",
+            "",
+            "{% if attribute(tags, 'xmas:url') %}",
+            "<li class='hasSymbol'>",
+            "  <i class=\"fa fa-globe\" aria-hidden=\"true\"></i>",
+            "  <span class='key'>{{ keyTrans('website') }}:</span>",
+            "  <span class='value'>",
+            "    <a target='_blank' href='{{ attribute(tags, 'xmas:url')|websiteUrl }}'>{{ attribute(tags, 'xmas:url') }}</a>",
+            "  </span>",
+            "</li>",
+            "{% endif %}"
+        ],
+        "markerSign": "{{ attribute(const, attribute(tags, 'xmas:feature'))|raw }}",
+        "markerSymbol": "{{ markerPointer({\"fillColor\":bgColor})|raw }}",
+        "listMarkerSymbol": "{{ markerCircle({\"fillColor\":bgColor})|raw }}"
+    },
+    "const": {
+        "market": "<img data-src='maki:commercial'>",
+        "tree": "<i class=\"fa fa-tree\" aria-hidden=\"true\"></i>",
+        "shop": "<i class=\"fa fa-shopping-basket\" aria-hidden=\"true\"></i>",
+        "event": "<img data-src='maki:amusement-park'>"
+    },
+    "info": [
+        "<table>",
+        "{% for value, icon in const %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ icon|raw }}</div></td>",
+        "    <td>{{ tagTrans('xmas:feature', value) }}</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerCircle({\"fillColor\":\"red\"})|raw }}</td>",
+        "    <td>{{ repoTrans('outdated feature') }}</td>",
+        "  </tr>",
+        "</table>"
+    ]
+}