diff --git a/buildings-height.json b/buildings-height.json
index 6e3851a..dc08cf3 100644
--- a/buildings-height.json
+++ b/buildings-height.json
@@ -18,6 +18,9 @@
         "pre": [
             "{% if tags.height is defined %}",
             "{% set approxHeight = tags.height %}",
+            "{% set m = tags.height|matches('(.*)\\s*(m|ft)$') %}",
+            "{% if m and m[2] == 'm' %}{% set approxHeight = m[1] %}{% endif %}",
+            "{% if m and m[2] == 'ft' %}{% set approxHeight = m[1] / 3.2808 %}{% endif %}",
             "{% elseif attribute(tags, 'building:levels') is defined %}",
             "{% set approxHeight = attribute(tags, 'building:levels') * 3.5 %}",
             "{% endif %}",
@@ -32,10 +35,13 @@
         ],
         "description": [
             "{% if tags.height is defined %}",
-            "{{ tags.height }}m",
-            "{% endif %}",
+            "  {% if tags.height|matches('(m|ft)$') %}{{ tags.height -}}",
+            "  {% else %}{{ tags.height }} m",
+            "  {%- endif -%}",
+            "{% endif -%}",
             "",
-            "{% if attribute(tags, 'building:levels') is defined %}",
+            "{%- if attribute(tags, 'building:levels') is defined -%}",
+            "{%- if tags.height is defined %}, {% endif %}",
             "{{ attribute(tags, 'building:levels') }} {{ keyTrans('building:levels') }}",
             "{% endif %}"
         ],
diff --git a/buildings-start_date.json b/buildings-start_date.json
index d2c3ffe..326f0b5 100644
--- a/buildings-start_date.json
+++ b/buildings-start_date.json
@@ -16,8 +16,22 @@
     },
     "feature": {
         "pre": [
-            "{% if tags.start_date %}",
-            "  {% set value = tags.start_date|osmParseDate %}",
+            "{% set start_date = tags.start_date %}",
+            "{% if attribute(tags, 'building:start_date') %}{% set start_date = attribute(tags, 'building:start_date') %}{% endif %}",
+            "{# Deprecated tags #}",
+            "{% if not start_date and attribute(tags, 'building:age') %}{% set start_date = attribute(tags, 'building:age') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'building:year_built') %}{% set start_date = attribute(tags, 'building:year_built') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'building:buildyear') %}{% set start_date = attribute(tags, 'building:buildyear') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'year_built') %}{% set start_date = attribute(tags, 'year_built') %}{% endif %}",
+            "{% if not start_date and attribute(tags, 'building:year') %}{% set start_date = attribute(tags, 'building:year') %}{% endif %}",
+            "",
+            "{% if start_date %}",
+            "  {# equalize tagging mistakes - need to add QA messages #}",
+            "  {# convert 1910-1911 to 1910..1911 #}{% set m = start_date|matches('^(\\d{4})-(\\d{4})$') %}{% if m %}{% set start_date = m[1] ~ '..' ~ m[2] %}{% endif %}",
+            "  {# convert 191* to 1910s #}{% set m = start_date|matches('^(\\d{3})\\*$') %}{% if m %}{% set start_date = m[1] ~ '0s' %}{% endif %}",
+            "",
+            "",
+            "  {% set value = 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] %}",
@@ -44,15 +58,15 @@
             "{% endif %}"
         ],
         "description": [
-            "{% if tags.start_date %}",
-            "{{ tags.start_date|osmFormatDate({ format: 'short' }) }}",
+            "{% if start_date %}",
+            "{{ start_date|osmFormatDate({ format: 'short' }) }}",
             "{% else %}",
             "{{ trans('unknown') }}",
             "{% endif %}"
         ],
         "popupDescription": [
-            "{% if tags.start_date %}",
-            "{{ tags.start_date|osmFormatDate }}",
+            "{% if start_date %}",
+            "{{ start_date|osmFormatDate }}",
             "{% else %}",
             "{{ trans('unknown') }}",
             "{% endif %}"
@@ -61,7 +75,7 @@
         "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 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 %}",
diff --git a/buildings-type.json b/buildings-type.json
index c7c2d85..ea9eb4e 100644
--- a/buildings-type.json
+++ b/buildings-type.json
@@ -7,16 +7,12 @@
         "pt-br": "Tipologias"
     },
     "query": {
-        "16": [
-            "(",
-            "  way[building][building!=no];",
-            "  relation[building][building!=no];",
-            ")"
-        ]
+        "16": "nwr[building][building!=no];"
     },
     "feature": {
         "pre": [
             "{% set type = tags.building|split(';')[0] %}",
+            "{% if tags.military %}{% set type = 'military' %}{% endif %}",
             "{% set color = const.other.color %}",
             "{% for cat, data in const %}",
             "  {% if type in data.types %}",
@@ -25,13 +21,18 @@
             "{% endfor %}"
         ],
         "description": [
-            "{% if tags.building == 'yes' %}",
+            "{% if tags.building == 'yes' and tags.military %}",
+            "{{ tagTrans('building', 'military') }}",
+            "{% elseif tags.building == 'yes' %}",
             "{{ keyTrans('building') }}",
             "{% else %}",
             "{{ tagTransList('building', tags.building) }}",
             "{% endif %}",
             "{% if tags.building == 'construction' and tags.construction %}",
             "({{ tagTransList('building', tags.construction) }})",
+            "{% endif %}",
+            "{% if tags.building in  [ 'yes', 'military' ] and tags.military %}",
+            "({{ tagTransList('military', tags.military) }})",
             "{% endif %}"
         ],
         "markerSymbol": "",
@@ -148,7 +149,7 @@
             ]
         },
         "agriculture": {
-            "name": "tag:landuse=agriculture",
+            "name": "tag:building=agriculture",
             "color": "#92e934",
             "types": [
                 "bakehouse",
@@ -218,10 +219,11 @@
             ]
         },
         "military": {
-            "name": "tag:military",
+            "name": "tag:building=military",
             "color": "#4a7300",
             "types": [
-                "bunker"
+                "bunker",
+                "military"
             ]
         },
         "unspecified": {
diff --git a/children.json b/children.json
index 69fc913..fa2efec 100644
--- a/children.json
+++ b/children.json
@@ -81,5 +81,42 @@
         "    <td>{{ tagTrans('amenity', 'toilets diaper=yes') }}</td>",
         "  </tr>",
         "</table>"
-    ]
+    ],
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": {
+                "playground": {
+                    "name": "{{ tagTrans('leisure', 'playground') }}",
+                    "query": "nwr[leisure=playground]"
+                },
+                "indoor_play": {
+                    "name": "{{ tagTrans('leisure', 'indoor_play') }}",
+                    "query": "nwr[leisure=indoor_play]"
+                },
+                "summer_camp": {
+                    "name": "{{ tagTrans('leisure', 'summer_camp') }}",
+                    "query": "nwr[leisure=summer_camp]"
+                },
+                "kids_area": {
+                    "name": "{{ keyTrans('kids_area') }}",
+                    "query": "nwr[kids_area]"
+                },
+                "shop_baby_goods": {
+                    "name": "{{ tagTrans('shop', 'baby_goods') }}",
+                    "query": "nwr[shop=baby_goods]"
+                },
+                "shop_toys": {
+                    "name": "{{ tagTrans('shop', 'toys') }}",
+                    "query": "nwr[shop=toys]"
+                },
+                "toilets": {
+                    "name": "{{ tagTrans('amenity', 'toilets diaper=yes') }}",
+                    "query": "nwr[amenity=toilets][diaper]"
+                }
+            }
+        }
+    }
 }
diff --git a/communication.json b/communication.json
index 83a90d3..3053b3e 100644
--- a/communication.json
+++ b/communication.json
@@ -130,5 +130,13 @@
             "sign": "<img src='maki:telephone'>",
             "zoom": 16
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/craft.json b/craft.json
index f9c49d4..af16569 100644
--- a/craft.json
+++ b/craft.json
@@ -73,5 +73,13 @@
             "window_construction": "",
             "winery": "🍷"
         }
+    },
+    "filter": {
+        "craft": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for t, v in const.crafts %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('craft', t) }}</option>{% endfor %}<option value='other' query='nwr[craft][craft!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>"
+        }
     }
 }
diff --git a/culture.json b/culture.json
index 630f375..226b774 100644
--- a/culture.json
+++ b/culture.json
@@ -121,5 +121,15 @@
         "  </tr>",
         "{% endfor %}",
         "</table>"
-    ]
+    ],
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "query": "nwr[{{ value }}]",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\">{{ trans('tag:' ~ k) }}</option>{% endfor %}<option value=\"other\" query=\"nwr[amenity=fountain]\">{{ trans('other') }}</option>",
+            "valueName": "{{ trans('tag:' ~ value) }}"
+        }
+    }
 }
diff --git a/education.json b/education.json
index 5b4772d..2b9887f 100644
--- a/education.json
+++ b/education.json
@@ -29,17 +29,13 @@
         ],
         "14": [
             "(",
-            "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[amenity~'^(college|university|library|school|kindergarten|language_school)$'];",
             "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ],
         "16": [
             "(",
-            "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[amenity~'^(college|university|library|school|kindergarten|language_school|public_bookcase)$'];",
             "nwr[office~\"^(educational_institution|research)$\"];",
             ")"
         ]
@@ -129,5 +125,13 @@
             "sign": "<i class='fas fa-vials'></i>",
             "zoom": 14
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/emergency.json b/emergency.json
index 73b606d..361337c 100644
--- a/emergency.json
+++ b/emergency.json
@@ -96,5 +96,34 @@
             "sign": "<img data-src='maki:hospital?fill=white'>",
             "background": "#009262"
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": {
+                "fire_station": {
+                    "name": "{{ tagTrans('amenity', 'fire_station') }}",
+                    "query": "nwr[amenity=fire_station]"
+                },
+                "hospital": {
+                    "name": "{{ tagTrans('amenity', 'hospital') }}",
+                    "query": "nwr[amenity=hospital]"
+                },
+                "police": {
+                    "name": "{{ tagTrans('amenity', 'police') }}",
+                    "query": "nwr[amenity=police]"
+                },
+                "emergency_phone": {
+                    "name": "{{ tagTrans('emergency', 'phone') }}",
+                    "query": "node[emergency=phone]"
+                },
+                "emergency_access_point": {
+                    "name": "{{ tagTrans('highway', 'emergency_access_point') }}",
+                    "query": "node[highway=emergency_access_point]"
+                }
+            }
+        }
     }
 }
diff --git a/financial.json b/financial.json
index 82b3bfb..9dce980 100644
--- a/financial.json
+++ b/financial.json
@@ -101,5 +101,13 @@
             "sign": "<i class=\"fas fa-piggy-bank\"></i>",
             "zoom": 15
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/gastro.json b/gastro.json
index d838586..eaf7a12 100644
--- a/gastro.json
+++ b/gastro.json
@@ -19,7 +19,7 @@
         "uk": "Гастрономія"
     },
     "query": {
-        "16": "(node[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];way[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];relation[amenity~'^(bar|biergarten|cafe|fast_food|ice_cream|pub|restaurant)$'];);"
+        "16": "(node[amenity~'^(bar|biergarten|cafe|fast_food|food_court|ice_cream|pub|restaurant)$'];way[amenity~'^(bar|biergarten|cafe|fast_food|food_court|ice_cream|pub|restaurant)$'];relation[amenity~'^(bar|biergarten|cafe|fast_food|food_court|ice_cream|pub|restaurant)$'];);"
     },
     "feature": {
         "description": "{{ tagTrans('amenity', tags.amenity) }}",
@@ -45,5 +45,72 @@
             "</ul>"
         ],
         "markerSign": "{% if tags.amenity=='bar' %}&#127864;{% elseif tags.amenity=='biergarten'%}&#127867;{% elseif tags.amenity=='cafe' %}&#9749;{% elseif tags.amenity=='fast_food' %}&#127828;{% elseif tags.amenity=='ice_cream' %}&#127848;{% elseif tags.amenity=='pub' %}&#127866;{% else %}&#127860;{% endif %}"
+    },
+    "filter": {
+        "amenity": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": [
+              "bar",
+              "biergarten",
+              "cafe",
+              "fast_food",
+              "food_court",
+              "ice_cream",
+              "pub",
+              "restaurant"
+            ],
+            "valueName": "{{ tagTrans('amenity', value) }}",
+            "op": "="
+        },
+        "cuisine_food": {
+            "name": "{{ keyTrans('cuisine/food') }}",
+            "type": "select",
+            "key": "cuisine",
+            "values": [ "barbecue", "burger", "casserole", "chicken", "couscous", "curry", "fish", "fish_and_chips", "fried_food", "friture", "gyros", "kebab", "noodle", "pasta", "pizza", "sandwich", "sausage", "seafood", "soup", "steak_house", "sub", "sushi", "tapas", "wings" ],
+            "valueName": "{{ tagTrans('cuisine', value) }}",
+            "op": "has"
+        },
+        "cuisine_dessert": {
+            "name": "{{ keyTrans('cuisine/dessert') }}",
+            "type": "select",
+            "key": "cuisine",
+            "values": [ "bagel", "biscuit", "bougatsa", "cake", "coffee_shop", "cookie", "crepe", "dessert", "donut", "empanada", "frozen_yogurt", "gingerbread", "ice_cream", "chimney_cake", "langos", "pancake", "pastry", "petit_four", "pie", "pogacha", "poppy_seed_roll", "profiterole", "punch_cake", "savory_pancakes", "strudel", "teahouse", "waffle" ],
+            "valueName": "{{ tagTrans('cuisine', value) }}",
+            "op": "has"
+        },
+        "cuisine_ethnicity": {
+            "name": "{{ keyTrans('cuisine/ethnicity') }}",
+            "type": "select",
+            "key": "cuisine",
+            "values": [ "afghan", "african", "american", "arab", "argentinian", "asian", "australian", "baiana", "balkan", "basque", "bavarian", "belarusan", "bolivian", "brazilian", "cantonese", "capixaba", "caribbean", "chinese", "croatian", "czech", "danish", "french", "gaucho", "german", "greek", "hawaiian", "hunan", "hungarian", "indian", "international", "iranian", "italian", "japanese", "jewish", "korean", "kyo_ryouri", "latin_american", "lebanese", "malagasy", "mediterranean", "mexican", "mineira", "new_mexican", "okinawa_ryori", "pakistani", "peruvian", "polish", "portuguese", "regional", "rhenish", "russian", "shandong", "sichuan", "spanish", "texan", "tex-mex", "thai", "turkish", "vietnamese", "westphalian" ],
+            "valueName": "{{ tagTrans('cuisine', value) }}",
+            "op": "has"
+        },
+        "diet": {
+            "name": "{{ keyTrans('diet') }}",
+            "type": "select",
+            "values": {
+               "*": {
+                 "name": "{{ repoTrans('Objects with diet information') }}",
+                 "query": "nwr[~\"^diet:\"~\".\"]"
+               },
+               "diet:vegan": {},
+               "diet:vegetarian": {},
+               "diet:pescetarian": {},
+               "diet:lacto_vegetarian": {},
+               "diet:ovo_vegetarian": {},
+               "diet:fruitarian": {},
+               "diet:raw": {},
+               "diet:gluten_free": {},
+               "diet:dairy_free": {},
+               "diet:lactose_free": {},
+               "diet:halal": {},
+               "diet:kosher": {}
+            },
+            "valueName": "{{ keyTrans(value) }}",
+            "op": "has_key_value"
+        }
     }
 }
diff --git a/health.json b/health.json
index a540782..57e3148 100644
--- a/health.json
+++ b/health.json
@@ -48,45 +48,209 @@
             "  {% set value = tags.emergency %}",
             "{% elseif tags.healthcare %}",
             "  {% set key = 'healthcare' %}",
-            "  {% set value = tags.healthcare %}",
+            "  {% set value = tags.healthcare|split(';')[0] %}",
             "{% else %}",
             "  {% set key = 'amenity' %}",
             "  {% set value = tags.amenity %}",
-            "{% endif %}"
+            "{% endif %}",
+            "{% set kv = key ~ '=' ~ value %}",
+            "{% set found = { sign: '' } %}",
+            "{% for data in const %}",
+            "  {% if kv in data.types %}{% set found = data %}{% endif %}",
+            "{% endfor %}"
         ],
         "description": [
-            "{{ tagTrans(key, value) }}",
+            "{{ tagTransList(key, attribute(tags, key)) }}",
             "{% if attribute(tags, 'healthcare:speciality') %}",
             "-",
             "{{ tagTransList('healthcare:speciality', attribute(tags, 'healthcare:speciality')) }}",
             "{% endif %}"
         ],
-        "markerSign": "{{ const[key ~ '=' ~ value]|raw }}"
+        "markerSign": "{{ found.sign|raw }}"
     },
     "info": [
         "<table>",
-        "{% for value, sign in const %}",
+        "{% for data in const %}",
         "  <tr>",
-        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ sign|raw }}</div></td>",
-        "    <td>{{ tagTrans(value|split('=')[0], value|split('=')[1]) }}</td>",
+        "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
+        "    <td>{{ tagTrans(data.types[0]|split('=')[0], data.types[0]|split('=')[1]) }}</td>",
         "  </tr>",
         "{% endfor %}",
         "</table>"
     ],
-    "const": {
-        "amenity=baby_hatch": "🚼",
-        "healthcare=blood_bank": "<img src='maki:blood-bank'>",
-        "healthcare=blood_donation": "<img src='maki:blood-bank'>",
-        "healthcare=clinic": "🏥",
-        "emergency=defibrillator": "<img src='maki:defibrillator'>",
-        "healthcare=dentist": "<img src='maki:dentist'>",
-        "healthcare=doctor": "<img src='maki:doctor'>",
-        "amenity=doctors": "<img src='maki:doctor'>",
-        "amenity=hospital": "🏥",
-        "healthcare=hospital": "🏥",
-        "amenity=nursing_home": "",
-        "amenity=pharmacy": "<img src='maki:pharmacy'>",
-        "amenity=social_facility": "",
-        "amenity=veterinary": "<img src='maki:veterinary'>"
+    "const": [
+        {
+            "types": [
+                "amenity=hospital",
+                "healthcare=hospital"
+            ],
+            "sign": "<i class=\"fas fa-hospital-alt\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=clinic"
+            ],
+            "sign": "<i class=\"fas fa-hospital\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=centre"
+            ],
+            "sign": "<i class=\"far fa-hospital\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=doctor",
+                "amenity=doctors"
+            ],
+            "sign": "<img data-src='maki:doctor'>"
+        },
+        {
+            "types": [
+                "amenity=pharmacy",
+                "healthcare=pharmacy"
+            ],
+            "sign": "<img data-src='maki:pharmacy'>"
+        },
+        {
+            "types": [
+                "emergency=defibrillator"
+            ],
+            "sign": "<img data-src='maki:defibrillator'>"
+        },
+        {
+            "types": [
+                "healthcare=dentist",
+                "amenity=dentist"
+            ],
+            "sign": "<img data-src='maki:dentist'>"
+        },
+        {
+            "types": [
+                "amenity=baby_hatch"
+            ],
+            "sign": "🚼"
+        },
+        {
+            "types": [
+                "healthcare=blood_bank"
+            ],
+            "sign": "<img data-src='maki:blood-bank'>"
+        },
+        {
+            "types": [
+                "healthcare=blood_donation"
+            ],
+            "sign": "<img data-src='maki:blood-bank'>"
+        },
+        {
+            "types": [
+                "amenity=nursing_home"
+            ]
+        },
+        {
+            "types": [
+                "amenity=social_facility"
+            ],
+            "sign": "<i class=\"fas fa-users\"></i>"
+        },
+        {
+            "types": [
+                "amenity=veterinary"
+            ],
+            "sign": "<img data-src='maki:veterinary'>"
+        },
+        {
+            "types": [
+                "healthcare=physiotherapist"
+            ],
+            "sign": "<i class=\"fas fa-user-injured\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=psychotherapist"
+            ],
+            "sign": "<i class=\"fas fa-couch\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=alternative"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=audiologist"
+            ],
+            "sign": "<i class=\"fas fa-headphones-alt\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=birthing_center"
+            ],
+            "sign": "<i class=\"fas fa-baby\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=dialysis"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=laboratory"
+            ],
+            "sign": "<i class=\"fas fa-vials\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=midwife"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=nutrition_counseling"
+            ],
+            "sign": "<i class=\"fas fa-carrot\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=occupational_therapist"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=optometrist"
+            ],
+            "sign": "<i class=\"fas fa-eye\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=podiatrist"
+            ],
+            "sign": ""
+        },
+        {
+            "types": [
+                "healthcare=rehabilitation"
+            ],
+            "sign": "<i class=\"fas fa-crutch\"></i>"
+        },
+        {
+            "types": [
+                "healthcare=speech_therapist"
+            ],
+            "sign": ""
+        }
+    ],
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for data in const %}<option value=\"{{ data.types[0] }}\" query=\"({% for t in data.types %}nwr[{{ t }}];{% endfor %})\" minzoom=\"{{ data.zoom }}\">{{ tagTrans(data.types[0]) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/historic.json b/historic.json
index 0042fc1..e9396fb 100644
--- a/historic.json
+++ b/historic.json
@@ -32,11 +32,25 @@
             "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)$\"];",
+            "node[memorial~\"^(flood_mark|high_water_mark)$\"];",
+            "node[\"memorial:type\"~\"^(flood_mark|high_water_mark)$\"];",
+            "node[flood_mark];",
             ")"
         ]
     },
     "feature": {
-        "description": "{{ tagTransList('historic', tags.historic) }}",
+        "description": [
+            "{% set historic = tags.historic %}",
+            "{% if attribute(tags, 'memorial') == 'high_water_mark' or attribute(tags, 'memorial:type') == 'high_water_mark' or attribute(tags, 'memorial') == 'flood_mark' or attribute(tags, 'memorial:type') == 'flood_mark' or tags.historic == 'highwater_mark' or (tags.historic != 'flood_mark' and tags.flood_mark) %}",
+            "{{ tagTrans('historic', 'flood_mark') }}",
+            "{{ debug(id ~ ': Deprecated tagging. Please use historic=flood_mark.') }}",
+            "{% set historic = 'flood_mark' %}",
+            "{% else %}",
+            "{{ tagTransList('historic', tags.historic) }}",
+            "{% endif %}",
+            "",
+            "{% if tags.flood_mark and tags.flood_mark != 'yes' %}({{ tagTrans('flood_mark', tags.flood_mark) }}){% endif %}"
+        ],
         "body": [
             "<ul>",
             "{% if tags.inscription %}",
@@ -66,9 +80,23 @@
             "   <span class='key'>{{ keyTrans('memorial:conflict') }}:</span>",
             "   <span class='value'>{{ tagTransList('memorial:conflict', attribute(tags, 'memorial:conflict')) }}</span>",
             "  </li>",
+            "{% endif %}",
+            "",
+            "{% if tags.flood_date %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"fas fa-calendar-alt\"></i>",
+            "   <span class='key'>{{ keyTrans('flood_date') }}:</span>",
+            "   <span class='value'>",
+            "     {% set flood_dates = [] %}",
+            "     {% for d in tags.flood_date|split(';') %}",
+            "       {% set flood_dates = flood_dates|merge([ d|trim|osmFormatDate ]) %}",
+            "     {% endfor %}",
+            "     {{ flood_dates|enumerate }}",
+            "   </span>",
+            "  </li>",
             "{% endif %}"
         ],
-        "markerSign": "{{ const[tags.historic].sign|raw }}"
+        "markerSign": "{{ const[historic].sign|raw }}"
     },
     "info": [
         "<table>",
@@ -112,6 +140,57 @@
         "ruins": {
             "sign": "<img data-src='temaki:ruins'>",
             "zoom": 14
+        },
+        "flood_mark": {
+            "sign": "<i class=\"fas fa-water\"></i>",
+            "zoom": 14,
+            "query": "(node[historic][memorial~\"^(flood_mark|high_water_mark)$\"];node[historic][\"memorial:type\"~\"^(flood_mark|high_water_mark)$\"];node[historic~\"^(highwater_mark|flood_mark)$\"];)"
+        }
+    },
+    "filter": {
+        "type": {
+            "key": "historic",
+            "show_default": "true",
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\" {% if const[t].query %}query='{{ const[t].query }}'{% endif %}>{% set list = list|merge([ t ]) %}{{ tagTrans('historic', t) }}</option>{% endfor %}<option value='other' query='nwr[historic][historic!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>",
+            "valueName": "{{ tagTrans('historic', value) }}"
+        },
+        "conflict": {
+            "key": "memorial:conflict",
+            "op": "has",
+            "name": "{{ keyTrans('memorial:conflict') }}",
+            "type": "select",
+            "values": [
+                "WW1",
+                "WW2"
+            ],
+            "valueName": "{{ tagTrans('memorial:conflict', value) }}"
+        },
+        "civilization": {
+            "key": "historic:civilization",
+            "op": "has",
+            "name": "{{ keyTrans('historic:civilization') }}",
+            "type": "select",
+            "values": [
+                "ancient_egyptian",
+                "ancient_greek",
+                "ancient_roman",
+                "byzantine",
+                "celtic",
+                "etruscan",
+                "imperial_chinese",
+                "korean",
+                "medieval",
+                "modern",
+                "neolithic",
+                "nuragic",
+                "ottoman",
+                "prehistoric",
+                "roman",
+                "western_roman"
+            ],
+            "valueName": "{{ tagTrans('historic:civilization', value) }}"
         }
     }
 }
diff --git a/img/blue_plaque.svg b/img/blue_plaque.svg
new file mode 100644
index 0000000..ffc85b7
--- /dev/null
+++ b/img/blue_plaque.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="15"
+   height="15"
+   viewBox="0 0 15 15"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="blue_plaque.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="35.4"
+     inkscape:cx="7.5"
+     inkscape:cy="7.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1366"
+     inkscape:window-height="712"
+     inkscape:window-x="0"
+     inkscape:window-y="28"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#0000ff;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4136"
+       width="10"
+       height="14"
+       x="2.5"
+       y="0.5" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157"
+       width="10"
+       height="9"
+       x="2.5"
+       y="3" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157-3"
+       width="5"
+       height="14"
+       x="5"
+       y="0.5" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.65248108px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4973402;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="2.9953218"
+       y="6.4278626"
+       id="text4520"
+       transform="scale(0.99468037,1.0053481)"><tspan
+         sodipodi:role="line"
+         id="tspan4518"
+         x="2.9953218"
+         y="6.4278626"
+         style="stroke-width:0.4973402">Ab Cde</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:1.60000002px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="2.2923846"
+       y="9.1671877"
+       id="text4524"><tspan
+         sodipodi:role="line"
+         id="tspan4522"
+         x="2.2923846"
+         y="9.1671877">Lorem ipsum</tspan></text>
+  </g>
+</svg>
diff --git a/img/plaque.svg b/img/plaque.svg
new file mode 100644
index 0000000..5aa441c
--- /dev/null
+++ b/img/plaque.svg
@@ -0,0 +1,104 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="15"
+   height="15"
+   viewBox="0 0 15 15"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.92.3 (2405546, 2018-03-11)"
+   sodipodi:docname="plaque.svg">
+  <defs
+     id="defs4" />
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="35.4"
+     inkscape:cx="7.5"
+     inkscape:cy="7.5"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     units="px"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1366"
+     inkscape:window-height="712"
+     inkscape:window-x="0"
+     inkscape:window-y="28"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Ebene 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4136"
+       width="10"
+       height="14"
+       x="2.5"
+       y="0.5" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157"
+       width="10"
+       height="9"
+       x="2.5"
+       y="3" />
+    <rect
+       style="color:#000000;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
+       id="rect4157-3"
+       width="5"
+       height="14"
+       x="5"
+       y="0.5" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:2.65248108px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.4973402;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       x="2.9953218"
+       y="6.4278626"
+       id="text4520"
+       transform="scale(0.99468037,1.0053481)"><tspan
+         sodipodi:role="line"
+         id="tspan4518"
+         x="2.9953218"
+         y="6.4278626"
+         style="stroke-width:0.4973402">Ab Cde</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:1.60000002px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="2.2923846"
+       y="9.1671877"
+       id="text4524"><tspan
+         sodipodi:role="line"
+         id="tspan4522"
+         x="2.2923846"
+         y="9.1671877">Lorem ipsum</tspan></text>
+  </g>
+</svg>
diff --git a/index.json b/index.json
index ba5a57d..85c4991 100644
--- a/index.json
+++ b/index.json
@@ -252,6 +252,9 @@
                 "hu": "Infrastruktúra"
             },
             "subCategories": [
+                {
+                    "id": "roads"
+                },
                 {
                     "id": "agriculture"
                 },
@@ -317,6 +320,9 @@
                         {
                             "id": "railway-maxspeed"
                         },
+                        {
+                            "id": "railway-gauge"
+                        },
                         {
                             "id": "railway-routes"
                         }
diff --git a/lang/ast.json b/lang/ast.json
index dd6c6ce..803f120 100644
--- a/lang/ast.json
+++ b/lang/ast.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Divisiones Alministratives",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Infraestructures",
@@ -60,6 +61,7 @@
     "category:public": "Serviciu Públicu",
     "category:railway": "Ferrocarril",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/ca.json b/lang/ca.json
index ac2b799..cefe3d8 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/cs.json b/lang/cs.json
index a6dd03c..18f7ea9 100644
--- a/lang/cs.json
+++ b/lang/cs.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Administrativní oblasti",
     "category:agriculture": "Zemědělství",
     "category:alternative_amenities": "Občanská vybavenost",
@@ -60,6 +61,7 @@
     "category:public": "Veřejné služby",
     "category:railway": "Železnice",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/de.json b/lang/de.json
index 1771e3b..dc739fb 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objekte mit Ernährungsinformationen",
     "category:administrative": "Administrative Gebiete",
     "category:agriculture": "Landwirtschaft",
     "category:alternative_amenities": "Einrichtungen",
@@ -12,7 +13,7 @@
     "category:car_amenities": "Einrichtungen",
     "category:car_furniture": "Straßenausstattung",
     "category:car_maxspeed": "Höchstgeschwindigkeiten",
-    "category:car_routes": "",
+    "category:car_routes": "Autorouten",
     "category:children": "Einrichtungen für Kinder",
     "category:coal": "Kohle",
     "category:communication": "Kommunikation",
@@ -35,24 +36,24 @@
     "category:index": "",
     "category:infrastructure": "Infrastruktur",
     "category:internet": "Internetzugang",
-    "category:law": "",
+    "category:law": "Juristische Institutionen",
     "category:leisure": "Freizeit",
     "category:leisure_sport_shopping": "Freizeit, Sport und Einkauf",
-    "category:memorial": "Denkmäler",
+    "category:memorial": "Denkmäler und Monumente",
     "category:military": "Militär",
-    "category:mtb-routes": "",
-    "category:natural": "Geographische Objekte",
+    "category:mtb-routes": "Mointainbikerouten",
+    "category:natural": "Naturformationen",
     "category:office": "Ämter, Dienst- und Geschäftsstellen",
     "category:oil_gas": "Erdöl und Erdgas",
-    "category:organisations": "",
+    "category:organisations": "Organisationen",
     "category:other": "Andere",
     "category:outdoor": "Freiluftaktivitäten",
     "category:phone": "Telekommunikation",
     "category:places": "Orte",
     "category:places_geo": "Orte",
-    "category:playgrounds": "Spielplätze",
+    "category:playgrounds": "Spielplatz",
     "category:post": "Post",
-    "category:power_routes": "",
+    "category:power_routes": "Hochspannungsverbindungen",
     "category:pt": "ÖV Karte",
     "category:pt:routes": "Routen",
     "category:pt:stops": "Haltestellen",
@@ -60,9 +61,10 @@
     "category:public": "Öffentliche Dienste",
     "category:railway": "Eisenbahn",
     "category:railway-electrification": "Eisenbahn Elektrifizierung",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Eisenbahn Infrastruktur",
     "category:railway-maxspeed": "Eisenbahn Höchstgeschwindigkeiten",
-    "category:railway-routes": "",
+    "category:railway-routes": "Eisenbahnrouten",
     "category:religion": "Religion",
     "category:renewables": "Erneuerbare Energien",
     "category:residential": "Wohngebiete",
diff --git a/lang/el.json b/lang/el.json
index b631c5a..7b57169 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Διοικητικά Όρια",
     "category:agriculture": "Γεωργία",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Δημόσιες Υπηρεσίες",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/en.json b/lang/en.json
index a804044..47f78ac 100644
--- a/lang/en.json
+++ b/lang/en.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objects with diet information",
     "category:administrative": "Administrative Areas",
     "category:agriculture": "Agriculture",
     "category:alternative_amenities": "Amenities",
@@ -32,13 +33,13 @@
     "category:health": "Health",
     "category:hiking_routes": "Hiking routes",
     "category:historic": "Historic",
-    "category:index": "",
+    "category:index": "Index of Categories",
     "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:memorial": "Memorials & Monuments",
     "category:military": "Military",
     "category:mtb-routes": "Mountain bike routes",
     "category:natural": "Natural Formations",
@@ -60,6 +61,7 @@
     "category:public": "Public Services",
     "category:railway": "Railway",
     "category:railway-electrification": "Railway electrification",
+    "category:railway-gauge": "Railway gauge",
     "category:railway-infrastructure": "Railway infrastructure",
     "category:railway-maxspeed": "Railway Maxspeed",
     "category:railway-routes": "Railway Routes",
@@ -67,6 +69,7 @@
     "category:renewables": "Renewables",
     "category:residential": "Residential Areas",
     "category:resources": "Resource Extraction",
+    "category:roads": "Roads",
     "category:services": "Services",
     "category:shop": "Shopping",
     "category:special": "Special",
@@ -75,7 +78,7 @@
     "category:tourism_attractions": "Tourism",
     "category:tourism_services": "Tourism",
     "category:transport": "Transportation",
-    "category:transport_alternative": "",
+    "category:transport_alternative": "Alternative Transportation modes",
     "category:transport_car": "Individual Traffic",
     "category:transport_cycle": "Cycling",
     "category:transport_pt": "Public Transportation",
@@ -86,7 +89,7 @@
     "category:wikipedia": "Wikipedia",
     "category:works": "Works",
     "category:xmas": "Christmas",
-    "date format not understood": "",
-    "outdated feature": "",
+    "date format not understood": "Invalid Date Format",
+    "outdated feature": "Features outdated",
     "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 f5f32dc..25f20b7 100644
--- a/lang/es.json
+++ b/lang/es.json
@@ -1,92 +1,94 @@
 {
-    "category:administrative": "",
-    "category:agriculture": "",
-    "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": "",
+    "Objects with diet information": "Objetos con información dietética",
+    "category:administrative": "Áreas Administrativas",
+    "category:agriculture": "Agricultura",
+    "category:alternative_amenities": "Instalaciones",
+    "category:alternative_routes": "Rutas",
+    "category:buildings": "Edificios",
+    "category:buildings-entrances": "Entradas",
+    "category:buildings-figure-ground": "Diagrama figura-fondo",
+    "category:buildings-height": "Altura del edificio",
+    "category:buildings-start_date": "Edad del edificio",
+    "category:buildings-type": "Tipos de edificio",
+    "category:car_amenities": "Instalaciones",
+    "category:car_furniture": "Mobiliario Urbano",
+    "category:car_maxspeed": "Velocidad máxima",
+    "category:car_routes": "Rutas de coche",
+    "category:children": "Instalaciones para niños",
+    "category:coal": "Carbón",
+    "category:communication": "Comunicación",
+    "category:construction": "Sitios de construcción",
+    "category:craft": "Artesano",
     "category:culture": "Cultura",
     "category:culture_religion": "Cultura y religión",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
-    "category:education": "",
-    "category:electric_power": "",
+    "category:cycle_amenities": "Instalaciones",
+    "category:cycle_routes": "Rutas ciclistas",
+    "category:education": "Servicios educativos",
+    "category:electric_power": "Energía eléctrica",
     "category:emergency": "Servicios de emergencia",
-    "category:energy": "",
-    "category:financial": "",
-    "category:gastro": "",
-    "category:gastro-smoking": "",
-    "category:health": "",
-    "category:hiking_routes": "",
-    "category:historic": "",
-    "category:index": "",
-    "category:infrastructure": "",
+    "category:energy": "Energía",
+    "category:financial": "Financiera",
+    "category:gastro": "Gastronomía",
+    "category:gastro-smoking": "Gastronomía libre de humo",
+    "category:health": "Salud",
+    "category:hiking_routes": "Rutas de senderismo",
+    "category:historic": "Histórico",
+    "category:index": "Índice",
+    "category:infrastructure": "Infraestructura",
     "category:internet": "Acceso a Internet",
-    "category:law": "",
-    "category:leisure": "",
+    "category:law": "Ley",
+    "category:leisure": "Ocio",
     "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": "",
-    "category:places": "",
-    "category:places_geo": "",
-    "category:playgrounds": "",
-    "category:post": "",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:memorial": "Monumentos y lugares conmemorativos",
+    "category:military": "Militar",
+    "category:mtb-routes": "Rutas de ciclismo de montaña",
+    "category:natural": "Formaciones naturales",
+    "category:office": "Oficinas",
+    "category:oil_gas": "Petróleo y gas natural",
+    "category:organisations": "Organizaciones",
+    "category:other": "Otro",
+    "category:outdoor": "Actividades al aire libre",
+    "category:phone": "Teléfono",
+    "category:places": "Lugares",
+    "category:places_geo": "Lugares",
+    "category:playgrounds": "Parque infantil",
+    "category:post": "Correos",
+    "category:power_routes": "Rutas de energía",
+    "category:pt": "Mapa de transporte público",
+    "category:pt:routes": "Rutas",
     "category:pt:stops": "Paradas y estaciones",
-    "category:pt_amenities": "",
-    "category:public": "",
-    "category:railway": "",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
-    "category:religion": "",
-    "category:renewables": "",
-    "category:residential": "",
-    "category:resources": "",
+    "category:pt_amenities": "Instalaciones",
+    "category:public": "Servicios públicos",
+    "category:railway": "Ferrocarril",
+    "category:railway-electrification": "Electrificación ferroviaria",
+    "category:railway-gauge": "Ancho de vía",
+    "category:railway-infrastructure": "Infraestructura ferroviaria",
+    "category:railway-maxspeed": "Velocidad máxima del ferrocarril",
+    "category:railway-routes": "Rutas de ferrocarril",
+    "category:religion": "Religión",
+    "category:renewables": "Renovables",
+    "category:residential": "Áreas residenciales",
+    "category:resources": "Extracción de recursos",
     "category:services": "Servicios",
-    "category:shop": "",
-    "category:special": "",
-    "category:sport": "",
-    "category:swimming_bathing": "",
-    "category:tourism_attractions": "",
-    "category:tourism_services": "",
-    "category:transport": "",
-    "category:transport_alternative": "",
-    "category:transport_car": "",
-    "category:transport_cycle": "",
-    "category:transport_pt": "",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
-    "category:waste": "",
-    "category:water": "",
-    "category:wikipedia": "",
-    "category:works": "",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:shop": "Compras",
+    "category:special": "Especial",
+    "category:sport": "Deportes",
+    "category:swimming_bathing": "Natación y baño",
+    "category:tourism_attractions": "Turismo",
+    "category:tourism_services": "Turismo",
+    "category:transport": "Transporte",
+    "category:transport_alternative": "Transporte alternativo",
+    "category:transport_car": "Tráfico individual",
+    "category:transport_cycle": "Ciclismo",
+    "category:transport_pt": "Transporte público",
+    "category:transport_walk": "Viandantes",
+    "category:walk_amenities": "Instalaciones",
+    "category:waste": "Basura",
+    "category:water": "Cuerpos de agua",
+    "category:wikipedia": "Wikipedia",
+    "category:works": "Fábricas",
+    "category:xmas": "Navidades",
+    "date format not understood": "Formato de fecha incomprensible",
+    "outdated feature": "Característica obsoleta",
+    "xmas:outdated-warning": "¡La característica no se ha actualizado para la temporada actual! Por favor verifique y establezca la etiqueta 'xmas: lastcheck' a la fecha actual."
 }
diff --git a/lang/et.json b/lang/et.json
index e4fed49..6b05375 100644
--- a/lang/et.json
+++ b/lang/et.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Administratiivalad",
     "category:agriculture": "Põllumajandus",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Kommunaalteenused",
     "category:railway": "Raudtee",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/fr.json b/lang/fr.json
index 088e64e..82f03e3 100644
--- a/lang/fr.json
+++ b/lang/fr.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objets avec information de régime alimentaire",
     "category:administrative": "Zones administratives",
     "category:agriculture": "Agriculture",
     "category:alternative_amenities": "Équipement",
@@ -16,7 +17,7 @@
     "category:children": "Équipements pour enfants",
     "category:coal": "Charbon",
     "category:communication": "Communication",
-    "category:construction": "Constructions",
+    "category:construction": "Chantiers de construction",
     "category:craft": "Artisanat",
     "category:culture": "Culture",
     "category:culture_religion": "Culture et religion",
@@ -55,11 +56,12 @@
     "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:stops": "Arrêts et stations",
     "category:pt_amenities": "Équipements",
     "category:public": "Services et équipements publics",
     "category:railway": "Chemins de fer",
     "category:railway-electrification": "Puissance électrique ferroviaire",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infrastructure ferroviaire",
     "category:railway-maxspeed": "Limites de vitesse",
     "category:railway-routes": "Lignes ferroviaires",
@@ -81,12 +83,12 @@
     "category:transport_pt": "Transports publics",
     "category:transport_walk": "Marche à pied",
     "category:walk_amenities": "Équipements piétons",
-    "category:waste": "Déchets/Recyclage",
+    "category:waste": "Déchets et recyclage",
     "category:water": "Hydrographie",
     "category:wikipedia": "Wikipédia",
     "category:works": "Zones industrielles",
     "category:xmas": "Noël",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "xmas:outdated-warning": "Cet élément n'a pas été mis à jour pour cette saison ! Veuillez vérifier son existence et régler la valeur de \"xmas:lastcheck\" à la date actuelle."
 }
diff --git a/lang/gl.json b/lang/gl.json
new file mode 100644
index 0000000..ccd2f8c
--- /dev/null
+++ b/lang/gl.json
@@ -0,0 +1,94 @@
+{
+    "Objects with diet information": "",
+    "category:administrative": "Divisións administrativas",
+    "category:agriculture": "Agricultura",
+    "category:alternative_amenities": "Instalacións",
+    "category:alternative_routes": "Rotas",
+    "category:buildings": "Edificios",
+    "category:buildings-entrances": "Entradas",
+    "category:buildings-figure-ground": "Cheos e baleiros",
+    "category:buildings-height": "Altitude do edificio",
+    "category:buildings-start_date": "Idade do edificio",
+    "category:buildings-type": "Tipos de edificios",
+    "category:car_amenities": "Instalacións",
+    "category:car_furniture": "Mobiliario urbano",
+    "category:car_maxspeed": "Velocidade máxima",
+    "category:car_routes": "Rotas automobilísticas",
+    "category:children": "Instalacións infantís",
+    "category:coal": "Carbón",
+    "category:communication": "Comunicacións",
+    "category:construction": "Terreos baixo construción",
+    "category:craft": "Artesán",
+    "category:culture": "Cultura",
+    "category:culture_religion": "Cultura e relixión",
+    "category:cycle_amenities": "Instalacións",
+    "category:cycle_routes": "Rotas ciclistas",
+    "category:education": "Servizos educativos",
+    "category:electric_power": "Enerxía eléctrica",
+    "category:emergency": "Servizos de emerxencia",
+    "category:energy": "Enerxía",
+    "category:financial": "Finanzas",
+    "category:gastro": "Restauración",
+    "category:gastro-smoking": "Restauración sen fume",
+    "category:health": "Saúde",
+    "category:hiking_routes": "Rotas sendeiristas",
+    "category:historic": "Histórico",
+    "category:index": "Índice",
+    "category:infrastructure": "Infraestrutura",
+    "category:internet": "Acceso á internet",
+    "category:law": "Leis",
+    "category:leisure": "Lecer",
+    "category:leisure_sport_shopping": "Lecer, deporte e compras",
+    "category:memorial": "Memoriais",
+    "category:military": "Militar",
+    "category:mtb-routes": "Rotas de bicicleta de montaña",
+    "category:natural": "Formacións naturais",
+    "category:office": "Oficinas",
+    "category:oil_gas": "Petróleo e gas natural",
+    "category:organisations": "Organizacións",
+    "category:other": "Outros",
+    "category:outdoor": "Actividades ó ar libre",
+    "category:phone": "Teléfono",
+    "category:places": "Lugares",
+    "category:places_geo": "Lugares",
+    "category:playgrounds": "Parques infantís",
+    "category:post": "Correos",
+    "category:power_routes": "Liñas eléctricas",
+    "category:pt": "Mapa de transporte público",
+    "category:pt:routes": "Rotas",
+    "category:pt:stops": "Paraxes e estacións",
+    "category:pt_amenities": "Instalacións",
+    "category:public": "Servizos públicos",
+    "category:railway": "Ferrocarril",
+    "category:railway-electrification": "Ferrocarril electrificado",
+    "category:railway-gauge": "",
+    "category:railway-infrastructure": "Infraestrutura do ferrocarril",
+    "category:railway-maxspeed": "Velocidade máxima do ferrocarril",
+    "category:railway-routes": "Liñas de ferrocarril",
+    "category:religion": "Relixión",
+    "category:renewables": "Renovábeis",
+    "category:residential": "Zonas residenciais",
+    "category:resources": "Estracción de recursos",
+    "category:services": "Servizos",
+    "category:shop": "Compras",
+    "category:special": "Especial",
+    "category:sport": "Deporte",
+    "category:swimming_bathing": "Natación e baño",
+    "category:tourism_attractions": "Turismo",
+    "category:tourism_services": "Turismo",
+    "category:transport": "Mobilidade",
+    "category:transport_alternative": "Transporte alternativo",
+    "category:transport_car": "Tráfico individual",
+    "category:transport_cycle": "Ciclismo",
+    "category:transport_pt": "Transporte público",
+    "category:transport_walk": "Peonil",
+    "category:walk_amenities": "Instalacións",
+    "category:waste": "Lixo",
+    "category:water": "Hidrografía",
+    "category:wikipedia": "Wikipedia",
+    "category:works": "Producións",
+    "category:xmas": "Nadal",
+    "date format not understood": "Formato da data non coñecido",
+    "outdated feature": "Elemento obsoleto",
+    "xmas:outdated-warning": "O elemento non foi actualizado para a tempada actual! Por favor, verifica e define a etiqueta 'xmas:lastcheck' para a data actual."
+}
diff --git a/lang/hu.json b/lang/hu.json
index 5fd5cb9..675bd27 100644
--- a/lang/hu.json
+++ b/lang/hu.json
@@ -1,14 +1,15 @@
 {
+    "Objects with diet information": "Étrend-információt tartalmazó objektumok",
     "category:administrative": "Közigazgatási határok",
     "category:agriculture": "Mezőgazdaság",
     "category:alternative_amenities": "Létesítmények",
-    "category:alternative_routes": "Útvonalak",
+    "category:alternative_routes": "(Jelzett) útvonalak",
     "category:buildings": "Épületek",
-    "category:buildings-entrances": "",
-    "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-entrances": "Bejáratok",
+    "category:buildings-figure-ground": "Fekete épületalaprajzok",
+    "category:buildings-height": "Épületek magassága",
+    "category:buildings-start_date": "Épületek kora",
+    "category:buildings-type": "Épületek típusa",
     "category:car_amenities": "Létesítmények",
     "category:car_furniture": "Jelzőtáblák",
     "category:car_maxspeed": "Sebességkorlátozás",
@@ -32,10 +33,10 @@
     "category:health": "Egészségügy",
     "category:hiking_routes": "Turistautak",
     "category:historic": "Történelmi objektumok",
-    "category:index": "Tartalom",
+    "category:index": "Kategóriák jegyzéke",
     "category:infrastructure": "Infrastruktúra",
     "category:internet": "Internetcsatlakozás",
-    "category:law": "",
+    "category:law": "Jog",
     "category:leisure": "Szabadidő",
     "category:leisure_sport_shopping": "Szabadidő, sport és vásárlás",
     "category:memorial": "Emlékművek",
@@ -44,7 +45,7 @@
     "category:natural": "Természeti képződmények",
     "category:office": "Irodák, hivatalok",
     "category:oil_gas": "Kőolaj, földgáz",
-    "category:organisations": "",
+    "category:organisations": "Szervezetek",
     "category:other": "Egyéb",
     "category:outdoor": "Szabadtéri tevékenységek",
     "category:phone": "Telefon",
@@ -60,6 +61,7 @@
     "category:public": "Közszolgáltatások",
     "category:railway": "Vasút",
     "category:railway-electrification": "Vasút villamosítottsága",
+    "category:railway-gauge": "Vasúti nyomtáv",
     "category:railway-infrastructure": "Vasúti infrastruktúra",
     "category:railway-maxspeed": "Sebességkorlátozás",
     "category:railway-routes": "Vasútvonalak",
@@ -75,7 +77,7 @@
     "category:tourism_attractions": "Látnivalók",
     "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_alternative": "Alternatív közlekedési módok",
     "category:transport_car": "Autós közlekedés",
     "category:transport_cycle": "Kerékpáros közlekedés",
     "category:transport_pt": "Tömegközlekedés",
@@ -86,7 +88,8 @@
     "category:wikipedia": "Wikipédia",
     "category:works": "Üzemek",
     "category:xmas": "Karácsony",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "date format not understood": "Érvénytelen dátumformátum",
+    "outdated feature": "Elavult objektumok",
+    "xmas:outdated-warning": "Ebben a szezonban nem frissült az objektum. Ellenőrizze, és állítsa be az <xmas:lastcheck> kulcshoz tartozó értéket a jelenlegi dátumra.",
+    "category:roads": "Utak"
 }
diff --git a/lang/it.json b/lang/it.json
index 0a02801..39fa8e9 100644
--- a/lang/it.json
+++ b/lang/it.json
@@ -1,92 +1,94 @@
 {
+    "Objects with diet information": "Elementi con informazioni alimentari",
     "category:administrative": "Suddivisioni amministrative",
     "category:agriculture": "Agricoltura",
     "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:buildings": "Edifici",
+    "category:buildings-entrances": "Ingressi",
+    "category:buildings-figure-ground": "Schema di Impronta",
+    "category:buildings-height": "Altezza dell'edificio",
+    "category:buildings-start_date": "Età dell'edificio",
+    "category:buildings-type": "Tipi di edificio",
     "category:car_amenities": "Infrastrutture",
     "category:car_furniture": "Dotazioni stradali",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
-    "category:children": "",
-    "category:coal": "",
+    "category:car_maxspeed": "Velocità massima",
+    "category:car_routes": "Tratte automobilistiche",
+    "category:children": "Luoghi per bambini",
+    "category:coal": "Carbone",
     "category:communication": "Communicazioni",
     "category:construction": "Cantieri",
-    "category:craft": "",
+    "category:craft": "Artigianato",
     "category:culture": "Cultura",
     "category:culture_religion": "Cultura",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_amenities": "Infrastrutture",
+    "category:cycle_routes": "Percorsi ciclistici",
     "category:education": "Istruzione",
     "category:electric_power": "Energia",
     "category:emergency": "Servizi d'emergenza",
-    "category:energy": "",
+    "category:energy": "Energia",
     "category:financial": "Finanze",
     "category:gastro": "Gastronomia",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "Gastronomia non fumatori",
     "category:health": "Sanità",
-    "category:hiking_routes": "",
+    "category:hiking_routes": "Percorsi escursionistici",
     "category:historic": "Storia",
-    "category:index": "",
-    "category:infrastructure": "",
-    "category:internet": "",
-    "category:law": "",
+    "category:index": "Indice delle Categorie",
+    "category:infrastructure": "Infrastrutture",
+    "category:internet": "Accesso a internet",
+    "category:law": "Legge",
     "category:leisure": "Tempo libero",
     "category:leisure_sport_shopping": "Tempo libero, sport e shopping",
-    "category:memorial": "",
+    "category:memorial": "Monumenti e Memoriali",
     "category:military": "Militare",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "Percorsi per mountain bike",
     "category:natural": "Natura",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "Uffici",
+    "category:oil_gas": "Petrolio e gas naturale",
+    "category:organisations": "Organizzazioni",
     "category:other": "Altri",
-    "category:outdoor": "",
-    "category:phone": "",
+    "category:outdoor": "Attività all'aperto",
+    "category:phone": "Telefono",
     "category:places": "Luoghi",
     "category:places_geo": "Luoghi",
-    "category:playgrounds": "",
-    "category:post": "",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:playgrounds": "Parco giochi",
+    "category:post": "Posta",
+    "category:power_routes": "Linee energetiche",
+    "category:pt": "Mappa del trasporto pubblico",
+    "category:pt:routes": "Percorsi",
     "category:pt:stops": "Stazioni e fermate",
     "category:pt_amenities": "Infrastrutture",
     "category:public": "Servizi pubblici",
     "category:railway": "Ferrovie",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "Elettrificazione ferroviaria",
+    "category:railway-gauge": "Scartamento Ferroviario",
+    "category:railway-infrastructure": "Infrastruttura ferroviaria",
+    "category:railway-maxspeed": "Velocità ferroviaria massima",
+    "category:railway-routes": "Percorsi ferroviari",
     "category:religion": "Religione",
-    "category:renewables": "",
+    "category:renewables": "Energie rinnovabili",
     "category:residential": "Aree residenziali",
-    "category:resources": "Areee estrattive",
+    "category:resources": "Aree estrattive",
     "category:services": "Servizi",
     "category:shop": "Acquisti",
-    "category:special": "",
+    "category:special": "Speciali",
     "category:sport": "Sport",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Nuoto e balneazione",
     "category:tourism_attractions": "Turismo",
     "category:tourism_services": "Turismo",
     "category:transport": "Trasporti",
-    "category:transport_alternative": "Alternativi (bicicletta, camminate, ...)",
+    "category:transport_alternative": "Trasporti Alternativi (bicicletta, camminate, ...)",
     "category:transport_car": "Trasporti individuali",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "Ciclistico",
     "category:transport_pt": "Trasporti pubblici",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
+    "category:transport_walk": "Pedonale",
+    "category:walk_amenities": "Attrazioni",
     "category:waste": "Smaltimento",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "Corpi Idrici",
+    "category:wikipedia": "Wikipedia",
     "category:works": "Fabbriche",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:xmas": "Natale",
+    "date format not understood": "Formato Data non riconosciuto",
+    "outdated feature": "Caratteristica obsoleta",
+    "xmas:outdated-warning": "Caratteristica non aggiornata alla stagione corrente! Controllare e revisionare il tag'xmas:lastcheck' alla data corrente."
 }
diff --git a/lang/ja.json b/lang/ja.json
index 478c538..c858b2b 100644
--- a/lang/ja.json
+++ b/lang/ja.json
@@ -1,92 +1,94 @@
 {
-    "category:administrative": "",
+    "Objects with diet information": "食事制限情報のあるオブジェクト",
+    "category:administrative": "行政界",
     "category:agriculture": "農業",
     "category:alternative_amenities": "生活環境",
     "category:alternative_routes": "ルート",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:buildings": "建物",
+    "category:buildings-entrances": "エントランス",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "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:car_maxspeed": "最高速度",
+    "category:car_routes": "車のルート",
+    "category:children": "子ども用施設",
+    "category:coal": "石炭",
+    "category:communication": "情報通信",
     "category:construction": "工事中",
-    "category:craft": "",
+    "category:craft": "職人",
     "category:culture": "文化",
-    "category:culture_religion": "文化",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:culture_religion": "文化と宗教",
+    "category:cycle_amenities": "アメニティ",
+    "category:cycle_routes": "自転車ルート",
     "category:education": "教育サービス",
     "category:electric_power": "電力",
     "category:emergency": "緊急サービス",
-    "category:energy": "",
+    "category:energy": "エネルギー",
     "category:financial": "金融",
     "category:gastro": "食べ物",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "禁煙の飲食店",
     "category:health": "健康",
-    "category:hiking_routes": "",
-    "category:historic": "記念",
+    "category:hiking_routes": "ハイキングルート",
+    "category:historic": "歴史",
     "category:index": "",
-    "category:infrastructure": "",
+    "category:infrastructure": "インフラ",
     "category:internet": "インターネット接続",
-    "category:law": "",
+    "category:law": "法律",
     "category:leisure": "レジャー",
     "category:leisure_sport_shopping": "レジャー",
-    "category:memorial": "",
+    "category:memorial": "記念碑",
     "category:military": "軍事",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "マウンテンバイクのルート",
     "category:natural": "自然地層",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "オフィス",
+    "category:oil_gas": "石油と天然ガス",
+    "category:organisations": "組織",
     "category:other": "その他",
-    "category:outdoor": "",
+    "category:outdoor": "アウトドア活動",
     "category:phone": "電話",
     "category:places": "場所",
     "category:places_geo": "場所",
-    "category:playgrounds": "",
+    "category:playgrounds": "遊び場",
     "category:post": "郵便",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:power_routes": "電線のルート",
+    "category:pt": "公共交通地図",
+    "category:pt:routes": "ルート",
     "category:pt:stops": "停留所と駅",
     "category:pt_amenities": "生活環境",
     "category:public": "公共サービス",
     "category:railway": "鉄道",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "鉄道の電力",
+    "category:railway-gauge": "",
+    "category:railway-infrastructure": "鉄道インフラ",
+    "category:railway-maxspeed": "鉄道の最高速度",
+    "category:railway-routes": "鉄道ルート",
     "category:religion": "宗教",
     "category:renewables": "",
     "category:residential": "住居エリア",
     "category:resources": "",
     "category:services": "サービス",
     "category:shop": "ショッピング",
-    "category:special": "",
+    "category:special": "特別",
     "category:sport": "スポーツ",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "水泳と入浴",
     "category:tourism_attractions": "観光",
     "category:tourism_services": "観光",
     "category:transport": "輸送",
     "category:transport_alternative": "その他交通 (サイクリング、ハイキング、...)",
     "category:transport_car": "個人輸送機関",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "サイクリング",
     "category:transport_pt": "公共輸送",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
+    "category:transport_walk": "ウォーキング",
+    "category:walk_amenities": "アメニティ",
     "category:waste": "処理場",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "水系",
+    "category:wikipedia": "ウィキペディア",
     "category:works": "工場",
-    "category:xmas": "",
+    "category:xmas": "クリスマス",
     "date format not understood": "",
     "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "xmas:outdated-warning": "今のシーズンは地物が更新されていません! チェックして現在の日付に'xmas:lastcheck' タグをセットしてください。"
 }
diff --git a/lang/nl.json b/lang/nl.json
index cad77ca..ce9215c 100644
--- a/lang/nl.json
+++ b/lang/nl.json
@@ -1,92 +1,94 @@
 {
+    "Objects with diet information": "Objecten met dieet informatie",
     "category:administrative": "Administratieve gebieden",
     "category:agriculture": "Landbouw",
     "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:buildings": "Gebouwen",
+    "category:buildings-entrances": "Toegangen",
+    "category:buildings-figure-ground": "Plattegrond",
+    "category:buildings-height": "Bouwhoogte",
+    "category:buildings-start_date": "Ouderdom van het gebouw",
+    "category:buildings-type": "Gebouwtypes",
     "category:car_amenities": "Voorzieningen",
     "category:car_furniture": "Straatmeubilair",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
-    "category:children": "",
-    "category:coal": "",
+    "category:car_maxspeed": "Snelheidslimiet",
+    "category:car_routes": "Autoroutes",
+    "category:children": "Voorzieningen voor kinderen",
+    "category:coal": "Kolen",
     "category:communication": "Communicatie",
     "category:construction": "Bouwterrein",
-    "category:craft": "",
+    "category:craft": "Handwerk",
     "category:culture": "Cultuur",
     "category:culture_religion": "Cultuur",
-    "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_amenities": "Voorzieningen",
+    "category:cycle_routes": "Fietsroutes",
     "category:education": "Onderwijs",
     "category:electric_power": "Stroomvoorziening",
     "category:emergency": "Hulpdiensten",
-    "category:energy": "",
+    "category:energy": "Energie",
     "category:financial": "Financieel",
     "category:gastro": "Gastronomie",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "Rookvrije gastronomie",
     "category:health": "Gezondheid",
-    "category:hiking_routes": "",
+    "category:hiking_routes": "Wandelroutes",
     "category:historic": "Historisch",
     "category:index": "",
-    "category:infrastructure": "",
+    "category:infrastructure": "Infrastructuur",
     "category:internet": "Internettoegang",
-    "category:law": "",
+    "category:law": "Juridische diensten",
     "category:leisure": "Vrije tijd",
     "category:leisure_sport_shopping": "Vrije tijd, Sport en Winkelen",
-    "category:memorial": "",
+    "category:memorial": "Gedenktekens",
     "category:military": "Militair",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "ATB routes",
     "category:natural": "Natuurlijke Formaties",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "Kantoren",
+    "category:oil_gas": "Petroleum en aardgas",
+    "category:organisations": "Organisaties",
     "category:other": "Andere",
-    "category:outdoor": "",
+    "category:outdoor": "Buitenactiviteiten",
     "category:phone": "Telefonie",
     "category:places": "Plaatsen",
     "category:places_geo": "Plaatsen",
-    "category:playgrounds": "",
+    "category:playgrounds": "Speeltuin",
     "category:post": "Post",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:power_routes": "Elektriciteitsleidingen",
+    "category:pt": "Openbaar vervoer kaart",
+    "category:pt:routes": "Routes",
     "category:pt:stops": "Haltes en Stations",
     "category:pt_amenities": "Voorzieningen",
     "category:public": "Openbare diensten",
     "category:railway": "Spoorwegen",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "Spoorwegelektrificatie",
+    "category:railway-gauge": "",
+    "category:railway-infrastructure": "Spoorweginfrastructuur",
+    "category:railway-maxspeed": "Spoorweg snelheidslimiet",
+    "category:railway-routes": "Spoorwegroutes",
     "category:religion": "Religie",
-    "category:renewables": "",
+    "category:renewables": "Hernieuwbare energie",
     "category:residential": "Woongebieden",
     "category:resources": "Grondstoffenwinning",
     "category:services": "Dienstverlening",
     "category:shop": "Winkelen",
-    "category:special": "",
+    "category:special": "Speciaal",
     "category:sport": "Sport",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Zwemmen en baden",
     "category:tourism_attractions": "Toerisme",
     "category:tourism_services": "Toerisme",
     "category:transport": "Vervoer",
     "category:transport_alternative": "Alternatief (Fiets, Wandel, ...)",
     "category:transport_car": "Gemotoriseerd individueel verkeer",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "Fietsen",
     "category:transport_pt": "Openbaar vervoer",
-    "category:transport_walk": "",
-    "category:walk_amenities": "",
+    "category:transport_walk": "Wandelen",
+    "category:walk_amenities": "Voorzieningen",
     "category:waste": "Afvalverwijdering",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "Oppervlaktewater",
+    "category:wikipedia": "Wikipedia",
     "category:works": "Fabrieken",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:xmas": "Kerstmis",
+    "date format not understood": "Datumformaat onbekend",
+    "outdated feature": "Achterhaalde informatie",
+    "xmas:outdated-warning": "Object werd niet geactualiseerd voor het huidige seizoen! Controleer en zet de tag 'xmas:lastcheck' op de huidige datum alstublieft."
 }
diff --git a/lang/oc.json b/lang/oc.json
new file mode 100644
index 0000000..1ad0b8d
--- /dev/null
+++ b/lang/oc.json
@@ -0,0 +1,95 @@
+{
+    "Objects with diet information": "Elements amb information de regime alimentari",
+    "category:administrative": "Divisions administrativas",
+    "category:agriculture": "Agricultura",
+    "category:alternative_amenities": "Equipament",
+    "category:alternative_routes": "Varianta d'itinerari",
+    "category:buildings": "Bastissas",
+    "category:buildings-entrances": "Intradas",
+    "category:buildings-figure-ground": "Marca au sòu",
+    "category:buildings-height": "Autor de la bastissa",
+    "category:buildings-start_date": "Data de bastison",
+    "category:buildings-type": "Tipe de bastissa",
+    "category:car_amenities": "Equipaments auto",
+    "category:car_furniture": "Fornituras automobilas",
+    "category:car_maxspeed": "Limits de velocitat",
+    "category:car_routes": "Itineraris auto",
+    "category:children": "Luòcs per leis enfants",
+    "category:coal": "Carbon",
+    "category:communication": "Communicacion",
+    "category:construction": "Talhiers de construccion",
+    "category:craft": "Artisanat",
+    "category:culture": "Cultura",
+    "category:culture_religion": "Cultura e religion",
+    "category:cycle_amenities": "Equipaments per lei cicistas",
+    "category:cycle_routes": "Itineraris ciclistas",
+    "category:education": "Education",
+    "category:electric_power": "Produccion/ Transpòrt d'Energia",
+    "category:emergency": "Servicis d'urgéncia",
+    "category:energy": "Energia",
+    "category:financial": "Finança",
+    "category:gastro": "Restauracion/ Gastronomia",
+    "category:gastro-smoking": "Restauration sensa tabat",
+    "category:health": "Santat",
+    "category:hiking_routes": "Itineraris per escorregudas",
+    "category:historic": "Istòria",
+    "category:index": "Indici dei categorias",
+    "category:infrastructure": "Infrastructuras",
+    "category:internet": "Accès a Internet",
+    "category:law": "Lèi",
+    "category:leisure": "Lesers",
+    "category:leisure_sport_shopping": "Vida quotidiana, lesers e espòrts",
+    "category:memorial": "Monuments e Memoriaus",
+    "category:military": "Luòcs militaris",
+    "category:mtb-routes": "Itineraris de VTT",
+    "category:natural": "Elements naturaus",
+    "category:office": "Oficis/ Burèus",
+    "category:oil_gas": "Petròli e gas naturau",
+    "category:organisations": "Organizacions",
+    "category:other": "Autrei",
+    "category:outdoor": "Activitats de plen aire",
+    "category:phone": "Telefòne",
+    "category:places": "Luòcs",
+    "category:places_geo": "Luòcs",
+    "category:playgrounds": "Jòcs per leis enfants",
+    "category:post": "Pòsta",
+    "category:power_routes": "Linhas electricas",
+    "category:pt": "Transpòrts publics",
+    "category:pt:routes": "Linhas",
+    "category:pt:stops": "Arrèsts e Estations",
+    "category:pt_amenities": "Infrastructuras de transpòrt",
+    "category:public": "Servicis e equimaments publics",
+    "category:railway": "Camins de fer",
+    "category:railway-electrification": "Electrificacion ferroviària",
+    "category:railway-gauge": "Ample dei vias",
+    "category:railway-infrastructure": "Infrastructura ferroviària",
+    "category:railway-maxspeed": "Limits de velocitat",
+    "category:railway-routes": "Linhas ferroviàrias",
+    "category:religion": "Religion",
+    "category:renewables": "Energias renovelablas",
+    "category:residential": "Quartiers residenciaus",
+    "category:resources": "Airau d'extraccion de ressorsas",
+    "category:services": "Servicis",
+    "category:shop": "Botigas",
+    "category:special": "Categorias particularas",
+    "category:sport": "Espòrt",
+    "category:swimming_bathing": "Natacion, banhada e banhèra",
+    "category:tourism_attractions": "Torisma",
+    "category:tourism_services": "Torisma",
+    "category:transport": "Transpòrts",
+    "category:transport_alternative": "Transpòrt alternatiu (ciclisme, caminada, ...)",
+    "category:transport_car": "Transpòrt automobil",
+    "category:transport_cycle": "Ciclisme",
+    "category:transport_pt": "Transpòrts publics",
+    "category:transport_walk": "Caminada",
+    "category:walk_amenities": "Equipaments pedoniers",
+    "category:waste": "Bordilhas e reciclatge",
+    "category:water": "Aigas e rius",
+    "category:wikipedia": "Wikipèdia",
+    "category:works": "Airaus industriaus",
+    "category:xmas": "Calendas",
+    "date format not understood": "Format de data non reconoissut",
+    "outdated feature": "Caracteristicas obsoletas",
+    "xmas:outdated-warning": "Aquest element es pas estat actualizat per la session ! Siatz pregats de verificar e mai reglar la valor de \"xmas:lastcheck\" a la data actuala.",
+    "category:roads": "Rotas"
+}
diff --git a/lang/pl.json b/lang/pl.json
index 77e00eb..330b44d 100644
--- a/lang/pl.json
+++ b/lang/pl.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 0397155..ba69712 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "Objetos com informações sobre dieta",
     "category:administrative": "Divisão político-administrativa",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "Equipamentos",
@@ -38,7 +39,7 @@
     "category:law": "Direito",
     "category:leisure": "Lazer",
     "category:leisure_sport_shopping": "Lazer, esportes e compras",
-    "category:memorial": "Memoriais",
+    "category:memorial": "Memoriais e Memoriais",
     "category:military": "Militar",
     "category:mtb-routes": "Rotas de mountain bike",
     "category:natural": "Formações naturais",
@@ -52,7 +53,7 @@
     "category:places_geo": "Lugares",
     "category:playgrounds": "Parquinhos",
     "category:post": "Correios",
-    "category:power_routes": "Rotas de energia",
+    "category:power_routes": "Rotas energéticas",
     "category:pt": "Mapa de transporte público",
     "category:pt:routes": "Rotas",
     "category:pt:stops": "Paradas e estações",
@@ -60,6 +61,7 @@
     "category:public": "Utilidade pública",
     "category:railway": "Ferrovia",
     "category:railway-electrification": "Eletrificação ferroviária",
+    "category:railway-gauge": "Calibre ferroviário",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "Rotas ferroviárias",
@@ -87,6 +89,6 @@
     "category:works": "Produção",
     "category:xmas": "Natal",
     "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "outdated feature": "Objeto antigo",
+    "xmas:outdated-warning": "O objeto não foi atualizado para a temporada atual! Por favor, verifique e defina a tag 'xmas:lastcheck' para a data atual."
 }
diff --git a/lang/pt.json b/lang/pt.json
index e38e6a6..f22254b 100644
--- a/lang/pt.json
+++ b/lang/pt.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "Regiões administrativas",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "Serviços públicos",
     "category:railway": "Linhas ferroviárias",
     "category:railway-electrification": "Eletrificação ferroviária",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "Infraestrutura ferroviária",
     "category:railway-maxspeed": "Velocidade máxima",
     "category:railway-routes": "",
diff --git a/lang/ro.json b/lang/ro.json
index 1ac1b5b..f80c6a2 100644
--- a/lang/ro.json
+++ b/lang/ro.json
@@ -1,10 +1,11 @@
 {
-    "category:administrative": "Zona administrativa",
+    "Objects with diet information": "",
+    "category:administrative": "Zona administrativă",
     "category:agriculture": "Agricultura",
     "category:alternative_amenities": "",
-    "category:alternative_routes": "",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:alternative_routes": "Rute",
+    "category:buildings": "Clădiri",
+    "category:buildings-entrances": "Intrări",
     "category:buildings-figure-ground": "",
     "category:buildings-height": "",
     "category:buildings-start_date": "",
@@ -50,16 +51,17 @@
     "category:phone": "Telefon",
     "category:places": "Locuri",
     "category:places_geo": "Locuri",
-    "category:playgrounds": "Loc de joaca",
+    "category:playgrounds": "Loc de joacă",
     "category:post": "",
     "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:pt": "Hartă transport public",
+    "category:pt:routes": "Rute",
     "category:pt:stops": "",
     "category:pt_amenities": "",
     "category:public": "Servicii publice",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
@@ -85,7 +87,7 @@
     "category:water": "",
     "category:wikipedia": "",
     "category:works": "",
-    "category:xmas": "",
+    "category:xmas": "Crăciun",
     "date format not understood": "",
     "outdated feature": "",
     "xmas:outdated-warning": ""
diff --git a/lang/ru.json b/lang/ru.json
index 30e885e..d95d41d 100644
--- a/lang/ru.json
+++ b/lang/ru.json
@@ -1,92 +1,94 @@
 {
+    "Objects with diet information": "Объекты с информацией о питании",
     "category:administrative": "Административные границы",
     "category:agriculture": "Сельское хозяйство",
     "category:alternative_amenities": "Полезные места",
     "category:alternative_routes": "Маршруты",
-    "category:buildings": "",
-    "category:buildings-entrances": "",
+    "category:buildings": "Здания",
+    "category:buildings-entrances": "Входы",
     "category:buildings-figure-ground": "",
-    "category:buildings-height": "",
-    "category:buildings-start_date": "",
-    "category:buildings-type": "",
+    "category:buildings-height": "Высота здания",
+    "category:buildings-start_date": "Возраст здания",
+    "category:buildings-type": "Типы зданий",
     "category:car_amenities": "Обслуживание транспорта",
     "category:car_furniture": "Элементы дороги",
-    "category:car_maxspeed": "",
-    "category:car_routes": "",
+    "category:car_maxspeed": "Максимальная скорость",
+    "category:car_routes": "Автомобильные маршруты",
     "category:children": "",
-    "category:coal": "",
+    "category:coal": "Уголь",
     "category:communication": "Услуги связи",
     "category:construction": "Места строительства",
-    "category:craft": "",
+    "category:craft": "Мастерские",
     "category:culture": "Культура",
-    "category:culture_religion": "Культура",
+    "category:culture_religion": "Культура и религия",
     "category:cycle_amenities": "",
-    "category:cycle_routes": "",
+    "category:cycle_routes": "Веломаршруты",
     "category:education": "Образование",
-    "category:electric_power": "Энергетика",
+    "category:electric_power": "Электроэнергетика",
     "category:emergency": "Экстренные службы",
-    "category:energy": "",
+    "category:energy": "Энергетика",
     "category:financial": "Финансы",
     "category:gastro": "Общепит",
-    "category:gastro-smoking": "",
+    "category:gastro-smoking": "Общественное питание без курения",
     "category:health": "Медицина",
-    "category:hiking_routes": "",
+    "category:hiking_routes": "Туристические маршруты",
     "category:historic": "Историческое",
-    "category:index": "",
-    "category:infrastructure": "",
-    "category:internet": "",
-    "category:law": "",
+    "category:index": "Индекс категорий",
+    "category:infrastructure": "Инфраструктура",
+    "category:internet": "Доступ в интернет",
+    "category:law": "Юристы",
     "category:leisure": "Досуг",
-    "category:leisure_sport_shopping": "Досуг",
-    "category:memorial": "",
+    "category:leisure_sport_shopping": "Досуг, спорт и магазины",
+    "category:memorial": "Памятники и монументы",
     "category:military": "Вооружённые силы",
-    "category:mtb-routes": "",
+    "category:mtb-routes": "Маршруты для горных велосипедов",
     "category:natural": "Природные образования",
-    "category:office": "",
-    "category:oil_gas": "",
-    "category:organisations": "",
+    "category:office": "Офисы",
+    "category:oil_gas": "Нефть и природный газ",
+    "category:organisations": "Организации",
     "category:other": "Прочее",
-    "category:outdoor": "",
-    "category:phone": "",
+    "category:outdoor": "Мероприятия на природе",
+    "category:phone": "Телефон",
     "category:places": "Места",
     "category:places_geo": "Места",
-    "category:playgrounds": "",
-    "category:post": "",
-    "category:power_routes": "",
-    "category:pt": "",
-    "category:pt:routes": "",
+    "category:playgrounds": "Детская площадка",
+    "category:post": "Почта",
+    "category:power_routes": "Маршруты энергетики",
+    "category:pt": "Карта общественного транспорта",
+    "category:pt:routes": "Маршруты",
     "category:pt:stops": "Остановки и станции",
     "category:pt_amenities": "Транспортные принадлежности",
     "category:public": "Общественные места",
     "category:railway": "Железные дороги",
-    "category:railway-electrification": "",
-    "category:railway-infrastructure": "",
-    "category:railway-maxspeed": "",
-    "category:railway-routes": "",
+    "category:railway-electrification": "Электрификация железных дорог",
+    "category:railway-gauge": "Железнодорожная колея",
+    "category:railway-infrastructure": "Железнодорожная инфраструктура",
+    "category:railway-maxspeed": "Максимальная скорость",
+    "category:railway-routes": "Железнодорожные маршруты",
     "category:religion": "Религия",
-    "category:renewables": "",
+    "category:renewables": "Возобновляемая",
     "category:residential": "Жилые районы",
     "category:resources": "Добыча ресурсов",
     "category:services": "Услуги",
     "category:shop": "Покупки",
-    "category:special": "",
+    "category:special": "Специальное",
     "category:sport": "Спорт",
-    "category:swimming_bathing": "",
+    "category:swimming_bathing": "Бассейны и сауны",
     "category:tourism_attractions": "Туризм",
     "category:tourism_services": "Туризм",
     "category:transport": "Транспорт",
-    "category:transport_alternative": "Альтернативное передвижение (Велоспорт, Пешие прогулки, ...)",
+    "category:transport_alternative": "Альтернативное передвижение",
     "category:transport_car": "Частный транспорт",
-    "category:transport_cycle": "",
+    "category:transport_cycle": "Велосипедный",
     "category:transport_pt": "Общественный транспорт",
-    "category:transport_walk": "",
+    "category:transport_walk": "Пешеходный",
     "category:walk_amenities": "",
     "category:waste": "Переработка отходов",
-    "category:water": "",
-    "category:wikipedia": "",
+    "category:water": "Водоемы",
+    "category:wikipedia": "Википедия",
     "category:works": "Промышленность",
-    "category:xmas": "",
-    "date format not understood": "",
-    "outdated feature": "",
-    "xmas:outdated-warning": ""
+    "category:xmas": "Рождество",
+    "date format not understood": "Неверный формат даты",
+    "outdated feature": "Устаревшие объекты",
+    "xmas:outdated-warning": "Объект не был обновлен в текущем сезоне! Пожалуйста, проверьте и установите текущую дату в теге 'xmas: lastcheck'."
 }
diff --git a/lang/template.json b/lang/template.json
index c7952ee..3affbef 100644
--- a/lang/template.json
+++ b/lang/template.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "",
@@ -60,6 +61,7 @@
     "category:public": "",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/lang/uk.json b/lang/uk.json
index 4e36f3f..2632f71 100644
--- a/lang/uk.json
+++ b/lang/uk.json
@@ -1,4 +1,5 @@
 {
+    "Objects with diet information": "",
     "category:administrative": "",
     "category:agriculture": "",
     "category:alternative_amenities": "Amenities",
@@ -60,6 +61,7 @@
     "category:public": "Громадські місця",
     "category:railway": "",
     "category:railway-electrification": "",
+    "category:railway-gauge": "",
     "category:railway-infrastructure": "",
     "category:railway-maxspeed": "",
     "category:railway-routes": "",
diff --git a/law.json b/law.json
index f670988..a750264 100644
--- a/law.json
+++ b/law.json
@@ -57,5 +57,13 @@
             "sign": "<i class=\"fas fa-file-signature\"></i>",
             "zoom": 14
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/memorial.json b/memorial.json
index 2022e21..c80d147 100644
--- a/memorial.json
+++ b/memorial.json
@@ -1,12 +1,5 @@
 {
     "type": "overpass",
-    "name": {
-        "de": "Denkmäler",
-        "en": "Memorials",
-        "fr": "Mémoriaux",
-        "hu": "Emlékművek",
-        "pt-br": "Memoriais"
-    },
     "query": {
         "11": [
             "(",
@@ -25,14 +18,34 @@
     },
     "feature": {
         "pre": [
-            "{% set value = tags.historic %}",
-            "{% if tags.historic == 'memorial' and tags.memorial %}",
-            "  {% set value = tags.historic ~ ' memorial=' ~ tags.memorial %}",
-            "{% elseif tags.historic == 'memorial' and attribute(tags, 'memorial:type') %}",
-            "  {% set value = tags.historic ~ ' memorial=' ~ attribute(tags, 'memorial:type') %}",
+            "{% set memtype = 'yes' %}",
+            "{% if tags.memorial %}",
+            "  {% set memtype = tags.memorial %}",
+            "{% elseif attribute(tags, 'memorial:type') %}",
+            "  {% set memtype = attribute(tags, 'memorial:type') %}",
+            "{% elseif attribute(tags, 'monument') %}",
+            "  {% set memtype = attribute(tags, 'monument') %}",
+            "{% elseif attribute(tags, 'memorial_type') %}",
+            "  {% set memtype = attribute(tags, 'memorial_type') %}",
+            "{% endif %}",
+            "",
+            "{% set memgroup = memtype %}",
+            "{% for value, data in const %}",
+            "{% if memtype in data.alias %}",
+            "{% set memgroup = value %}",
+            "{% endif %}",
+            "{% endfor %}"
+        ],
+        "description": [
+            "{{ tagTrans('historic', tags.historic) }}",
+            "",
+            "{% if memtype != 'yes' %}",
+            "  ({{ tagTrans('memorial', memtype) }})",
             "{% endif %}"
         ],
-        "description": "{{ tagTransList('historic', value) }}",
+        "priority": [
+            "{% if tags.historic == 'monument' %}0[% else %}1{% endif %}"
+        ],
         "body": [
             "<ul>",
             "{% if tags.inscription %}",
@@ -73,7 +86,7 @@
             "{% endif %}",
             "</ul>"
         ],
-        "markerSign": "{{ const[value].sign|raw }}"
+        "markerSign": "{{ const[memgroup].sign|raw }}"
     },
     "info": [
         "<table>",
@@ -81,7 +94,7 @@
         "{% if data.zoom <= map.zoom %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('historic', value) }}</td>",
+        "    <td>{{ tagTrans('memorial', value) }}</td>",
         "  </tr>",
         "{% endif %}",
         "{% endfor %}",
@@ -94,17 +107,111 @@
         "</table>"
     ],
     "const": {
-        "memorial": {
-            "sign": "<span  style='position: relative; top: -2px;'><img src='maki:monument?size=11'></span>",
+        "plaque": {
+            "alias": [ "plate" ],
+            "sign": "<img data-src='img/plaque.svg'>",
             "zoom": 14
         },
-        "memorial memorial=plaque": {
+        "blue_plaque": {
+            "sign": "<img data-src='img/blue_plaque.svg'>",
+            "zoom": 14
+        },
+        "statue": {
+            "sign": "<i class=\"fas fa-female\"></i>",
+            "zoom": 14
+        },
+        "war_memorial": {
+            "alias": [ "war_monument" ],
+            "sign": "<img data-src='maki:horse-riding'>",
+            "zoom": 14
+        },
+        "stolperstein": {
             "sign": "",
             "zoom": 14
         },
-        "monument": {
-            "sign": "<img data-src='maki:monument?size=15'>",
-            "zoom": 11
+        "stone": {
+            "sign": "",
+            "zoom": 14
+        },
+        "bust": {
+            "alias": [ "person", "public_person" ],
+            "sign": "<i class=\"fas fa-user-alt\"></i>",
+            "zoom": 14
+        },
+        "stele": {
+            "sign": "",
+            "zoom": 14
+        },
+        "obelisk": {
+            "sign": "",
+            "zoom": 14
+        },
+        "sculpture": {
+            "sign": "",
+            "zoom": 14
+        },
+        "ghost_bike": {
+            "sign": "<i style=\"color: white;\" class=\"fas fa-bicycle\"></i>",
+            "zoom": 14
+        },
+        "vehicle": {
+            "alias": [ "tank" ],
+            "sign": "<i class=\"fas fa-car\"></i>",
+            "zoom": 14
+        },
+        "cross": {
+            "sign": "<i class=\"fas fa-cross\"></i>",
+            "zoom": 14
+        }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value='{{ k }}' query='nwr[~\"^(memorial|memorial:type|memorial_type|monument)$\"~\"^({{ k }}{% for alias in v.alias %}|{{ alias }}{% endfor %})$\"]'>{{ tagTrans('memorial', k) }}</option>{% endfor %}"
+        },
+        "size": {
+            "name": "{{ keyTrans('memorial') }} | {{ keyTrans('monument') }}",
+            "type": "radio",
+            "values": "<option value='*' query=''>{{ trans('any value') }}</option>\n<option value='memorial' query='nwr[historic=memorial]'>{{ keyTrans('memorial') }}</option>\n<option value='monument' query='nwr[historic=monument]'>{{ keyTrans('monument') }}</option>",
+            "default": "*"
+        },
+        "conflict": {
+            "key": "memorial:conflict",
+            "op": "has",
+            "name": "{{ keyTrans('memorial:conflict') }}",
+            "type": "select",
+            "values": [
+                "WW1",
+                "WW2"
+            ],
+            "valueName": "{{ tagTrans('memorial:conflict', value) }}"
+        },
+        "civilization": {
+            "key": "historic:civilization",
+            "op": "has",
+            "name": "{{ keyTrans('historic:civilization') }}",
+            "type": "select",
+            "values": [
+                "ancient_egyptian",
+                "ancient_greek",
+                "ancient_roman",
+                "byzantine",
+                "celtic",
+                "etruscan",
+                "imperial_chinese",
+                "korean",
+                "medieval",
+                "modern",
+                "neolithic",
+                "nuragic",
+                "ottoman",
+                "prehistoric",
+                "roman",
+                "western_roman"
+            ],
+            "valueName": "{{ tagTrans('historic:civilization', value) }}"
         }
     }
 }
diff --git a/natural.json b/natural.json
index 1e2d84c..53749c3 100644
--- a/natural.json
+++ b/natural.json
@@ -3,7 +3,7 @@
     "name": {
         "ast": "Formaciones naturales",
         "cs": "Přírodní úkazy",
-        "de": "Geographische Objekte",
+        "de": "Naturformationen",
         "el": "Φυσικοί Σχηματισμοί",
         "en": "Natural Formations",
         "fr": "Éléments naturels",
@@ -19,21 +19,22 @@
     "query": {
         "9": [
             "(",
-            "node[natural~\"^(peak|volcano)$\"];",
+            "node[natural~\"^(peak|volcano|valley)$\"];",
             ")"
         ],
         "13": [
             "(",
-            "node[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|water|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
-            "way[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|water|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
-            "relation[natural~\"^(peak|volcano|wood|scrub|heath|grassland|fell|bare_rock|scree|shingle|sand|mud|water|wetland|glacier|bay|cape|beach|coastline|spring|hot_spring|geyser|valley|ridge|arete|cliff|saddle|rock|stone|sinkhole|cave_entrance)$\"];",
+            "nwr[natural~\"^(peak|volcano|wood|glacier|cape|peninsula|beach|coastline|reef|hill|valley|ridge|arete|saddle|sinkhole|cave_entrance|isthmus)$\"];",
             ")"
         ],
         "16": [
             "(",
-            "node[natural];",
-            "way[natural];",
-            "relation[natural];",
+            "nwr[natural][natural!~\"^(water|divide|bay|strait|spring|hot_spring|geyser|tree)$\"];",
+            ")"
+        ],
+        "18": [
+            "(",
+            "nwr[natural][natural!~\"^(water|divide|bay|strait|spring|hot_spring|geyser)$\"];",
             ")"
         ]
     },
@@ -42,6 +43,243 @@
             "{{ localizedTag(tags, 'name') | default(trans('unnamed')) }}",
             "{% if tags.natural == 'peak' and tags.ele %}({{ tags.ele }}m){% endif %}"
         ],
-        "description": "{{ tagTrans('natural', tags.natural) }}"
-    }
+        "description": "{{ tagTrans('natural', tags.natural) }}",
+        "style": {
+            "color": "{{ const[tags.natural].color|default('#f2756a') }}"
+        },
+        "markerSign": "<span style='color: white'>{{ const[tags.natural].sign|raw }}</span>",
+        "markerSymbol": "{{ markerPointer({ fillColor: const[tags.natural].color|default('#f2756a') })|raw }}",
+        "listMarkerSymbol": "{{ markerCircle({ fillColor: const[tags.natural].color|default('#f2756a') })|raw }}"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "key": "natural",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for k, v in const %}<option value=\"{{ k }}\">{% set list = list|merge([ k ]) %}{{ tagTrans('natural', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[natural][natural!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "sort": "natsort",
+            "op": "has"
+        }
+    },
+    "const": {
+        "wood": {
+            "zoom": 13,
+            "sign": "<i class='fas fa-tree'></i>",
+            "color": "darkgreen",
+            "group": "vegetation"
+        },
+        "tree_row": {
+            "zoom": 16,
+            "sign": "<i class='fas fa-tree'></i>",
+            "color": "darkgreen",
+            "group": "vegetation"
+        },
+        "tree": {
+            "zoom": 18,
+            "sign": "<i class='fas fa-tree'></i>",
+            "color": "darkgreen",
+            "group": "vegetation"
+        },
+        "scrub": {
+            "zoom": 16,
+            "sign": "",
+            "color": "green",
+            "group": "vegetation"
+        },
+        "heath": {
+            "zoom": 16,
+            "sign": "",
+            "color": "green",
+            "group": "vegetation"
+        },
+        "moor": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#8aba50",
+            "group": "vegetation"
+        },
+        "grassland": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#00dd24",
+            "group": "vegetation"
+        },
+        "fell": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#49ba91",
+            "group": "vegetation"
+        },
+        "bare_rock": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#6f6f6f",
+            "group": "vegetation"
+        },
+        "scree": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#6f6f6f",
+            "group": "vegetation"
+        },
+        "shingle": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#6f6f6f",
+            "group": "vegetation"
+        },
+        "sand": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#f9d199",
+            "group": "vegetation"
+        },
+        "mud": {
+            "zoom": 16,
+            "sign": "<img data-src='maki:wetland?fill=white'>",
+            "color": "#988b00",
+            "group": "vegetation"
+        },
+        "wetland": {
+            "zoom": 16,
+            "sign": "<img data-src='maki:wetland?fill=white'>",
+            "color": "#00baff",
+            "group": "water"
+        },
+        "glacier": {
+            "zoom": 13,
+            "sign": "<i style='color: black;' class='fas fa-icicles'></i>",
+            "color": "white",
+            "group": "water"
+        },
+        "cape": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#1d7500",
+            "group": "water"
+        },
+        "peninsula": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#1d7500",
+            "group": "water"
+        },
+        "beach": {
+            "zoom": 13,
+            "sign": "<i class='fas fa-umbrella-beach'></i>",
+            "color": "#ff7f50",
+            "group": "water"
+        },
+        "coastline": {
+            "zoom": 13,
+            "sign": "",
+            "color": "blue",
+            "group": "water"
+        },
+        "reef": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#005fbd",
+            "group": "water"
+        },
+        "peak": {
+            "zoom": 9,
+            "sign": "<i class='fas fa-mountain'></i>",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "hill": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "volcano": {
+            "zoom": 9,
+            "sign": "",
+            "color": "#cf3a00",
+            "group": "landform"
+        },
+        "valley": {
+            "zoom": 9,
+            "sign": "",
+            "color": "#1d7500",
+            "group": "landform"
+        },
+        "river_terrace": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#a0a500",
+            "group": "landform"
+        },
+        "ridge": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "arete": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "cliff": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "saddle": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "rock": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "stone": {
+            "zoom": 16,
+            "sign": "",
+            "color": "#4f4f4f",
+            "group": "landform"
+        },
+        "sinkhole": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#a0a500",
+            "group": "landform"
+        },
+        "cave_entrance": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#000000",
+            "group": "landform"
+        },
+        "isthmus": {
+            "zoom": 13,
+            "sign": "",
+            "color": "#1d7500",
+            "group": "landform"
+        }
+    },
+    "info": [
+        "<table>",
+        "  {% for k, data in const %}",
+        "    {% if data.zoom <= map.zoom %}",
+        "    <tr>",
+        "      <td>",
+        "        {{ markerCircle({ fillColor: data.color })|raw }}<div class='sign'>{{ data.sign|raw }}</div>",
+        "      </td>",
+        "      <td>{{ tagTrans('natural', k) }}</td>",
+        "    </tr>",
+        "    {% endif %}",
+        "  {% endfor %}",
+        "</table>"
+    ]
 }
diff --git a/office.json b/office.json
index b92ba34..c40cef7 100644
--- a/office.json
+++ b/office.json
@@ -43,5 +43,13 @@
         "therapist": "<i class='fas fa-couch'></i>",
         "travel_agent": "<i class='fas fa-plane-departure'></i>",
         "publisher": "<i class='fas fa-book'></i>"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans('office', k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/organisations.json b/organisations.json
index 1d73ea0..f8ae358 100644
--- a/organisations.json
+++ b/organisations.json
@@ -78,5 +78,13 @@
             "sign": "<i class='fas fa-hands-helping'></i>",
             "zoom": 13
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/places.json b/places.json
index 2ca3d01..29d554b 100644
--- a/places.json
+++ b/places.json
@@ -34,5 +34,14 @@
         "description": "{{ tagTrans('place', tags.place) }}",
         "body": "{% if tags.population %}{{ keyTrans('population') }}: {{ tags.population }}{% endif %}",
         "priority": "{% set priorities = { 'continent': 0, 'country': 1, 'state': 2, 'region': 3, 'city': 4, 'town': 5, 'village': 6, 'suburb': 7, 'hamlet': 8, 'quarter': 9, neighbourhood: 10, 'isolated_dwelling': 11, 'farm': 12 } %}{{ priorities[tags.place] }}"
+    },
+    "filter": {
+        "name": {
+            "key": [ "name", "name:*" ],
+            "name": "{{ keyTrans('name') }}",
+            "type": "text",
+            "change_on": "keyup",
+            "op": "strsearch"
+        }
     }
 }
diff --git a/power_routes.json b/power_routes.json
index 61c088e..e90591c 100644
--- a/power_routes.json
+++ b/power_routes.json
@@ -4,7 +4,7 @@
         "en": "Power routes",
         "fr": "Réseaux électriques",
         "hu": "Távvezetékek",
-        "pt-br": "Rotas de energia"
+        "pt-br": "Rotas energéticas"
     },
     "query": {
         "10": "relation[type=route][route=power]"
diff --git a/pt.json b/pt.json
index fd517b5..ff9d2b4 100644
--- a/pt.json
+++ b/pt.json
@@ -224,12 +224,12 @@
     ],
     "const": {
         "train": {
-            "sign": "<img src='maki:rail?fill=#ffffff'>",
+            "sign": "<img data-src='maki:rail?fill=#ffffff'>",
             "zoom": 12,
             "color": "#00007f"
         },
         "subway": {
-            "sign": "<img src='maki:rail-metro?fill=#ffffff'>",
+            "sign": "<img data-src='maki:rail-metro?fill=#ffffff'>",
             "zoom": 12,
             "color": "#0000ff"
         },
@@ -239,29 +239,45 @@
             "color": "#006f8f"
         },
         "tram": {
-            "sign": "<img src='maki:rail-light?fill=#ffffff'>",
+            "sign": "<img data-src='maki:rail-light?fill=#ffffff'>",
             "zoom": 12,
             "color": "#7f007f"
         },
         "bus": {
-            "sign": "<img src='maki:bus?fill=#ffffff'>",
+            "sign": "<img data-src='maki:bus?fill=#ffffff'>",
             "zoom": 12,
             "color": "#af0000"
         },
         "trolleybus": {
-            "sign": "<img src='maki:bus?fill=#ffffff'>",
+            "sign": "<img data-src='maki:bus?fill=#ffffff'>",
             "zoom": 12,
             "color": "#af3f00"
         },
         "aerialway": {
-            "sign": "<img src='maki:aerialway?fill=#ffffff'>",
+            "sign": "<img data-src='maki:aerialway?fill=#ffffff'>",
             "zoom": 12,
             "color": "#00aaaa"
         },
         "ferry": {
-            "sign": "<img src='maki:ferry?fill=#ffffff'>",
+            "sign": "<img data-src='maki:ferry?fill=#ffffff'>",
             "zoom": 12,
             "color": "#007fff"
         }
+    },
+    "filter": {
+        "route": {
+            "type": "select",
+            "show_default": "true",
+            "valueName": "{{ tagTrans('route', value) }}",
+            "values": [
+                "aerialway",
+                "bus",
+                "ferry",
+                "subway",
+                "train",
+                "tram",
+                "trolleybus"
+            ]
+        }
     }
 }
diff --git a/public.json b/public.json
index 448fb31..3c95f11 100644
--- a/public.json
+++ b/public.json
@@ -89,5 +89,13 @@
         "amenity=townhall": "<img data-src='maki:town-hall'>",
         "office=administration": "<img data-src='maki:town-hall'>",
         "office=government": "<img data-src='maki:town-hall'>"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/railway-electrification.json b/railway-electrification.json
index f54ba20..66bb031 100644
--- a/railway-electrification.json
+++ b/railway-electrification.json
@@ -10,28 +10,34 @@
     },
     "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)$'];"
+        "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];"
     },
     "feature": {
         "pre": [
             "{% if tags.electrified and tags.electrified != 'no' %}",
-            "  {% if tags.voltage < 1000 %}",
-            "    {% set color = colorInterpolate([ '#00ff00', 'blue' ], tags.voltage / 1000) %}",
+            "  {% if not tags.voltage is defined %}",
+            "    {% set color = const.colorUnknown %}",
+            "  {% elseif not tags.voltage|matches('^[0-9]+$') %}",
+            "    {% set color = const.colorIllegal %}",
+            "  {% elseif tags.voltage < const.range[1] %}",
+            "    {% set color = colorInterpolate(const.scheme|slice(0, 2), tags.voltage / const.range[1]) %}",
             "  {% else %}",
-            "    {% set color = colorInterpolate([ 'blue', 'red' ], (tags.voltage - 1000) / 24000) %}",
+            "    {% set color = colorInterpolate(const.scheme|slice(1, 2), (tags.voltage - const.range[1]) / (const.range[2] - const.range[1])) %}",
             "  {% endif %}",
+            "{% elseif tags.electrified and tags.electrified == 'no' %}",
+            "  {% set color = const.colorNone %}",
             "{% else %}",
-            "  {% set color='black' %}",
-            "{%endif %}",
+            "  {% set color = const.colorUnknown %}",
+            "{% endif %}",
             "",
             "{% if tags.service == 'yard' or tags.service == 'siding' or tags.service == 'spur' or tags.service == 'crossover' %}",
             "    {% set width=2 %}",
             "  {% else %}",
             "    {% if tags.railway == 'rail' %}",
             "      {% if tags.usage == 'main' or tags.usage == 'branch' %}",
-            "        {% set width=3 %}",
+            "        {% set width=4 %}",
             "      {% else %}",
-            "        {% set width=2.5 %}",
+            "        {% set width=3 %}",
             "      {% endif %}",
             "    {% else %}",
             "      {% set width=2 %}",
@@ -67,8 +73,8 @@
             "opacity": "1",
             "fill": null,
             "dashArray": [
-                "{% if not tags.electrified or tags.electrified == 'no' %}",
-                "{% elseif tags.frequency == 0 %}",
+                "{% if not tags.electrified is defined  %}",
+                "{% elseif not tags.frequency is defined or tags.frequency == 0 %}",
                 "{% else %}",
                 "5,2",
                 "{% endif %}"
@@ -78,41 +84,60 @@
             "width": "{{ width }}",
             "color": "white",
             "opacity": "1",
+            "lineCap": "butt",
             "fill": null
         }
     },
     "info": [
         "<table>",
-        "  {% set color = '#000000' %}",
         "  <tr>",
-        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': const.colorNone })|raw }}</td>",
         "    <td>{{ trans('not electrified') }}</td>",
         "  </tr>",
-        "{% for i in range(0, 1000, 200) %}",
-        "  {% set color = colorInterpolate([ '#00ff00', 'blue' ], i / 1000) %}",
+        "{% for i in range(0, const.range[1], const.infoSteps[0]) %}",
+        "  {% set color = colorInterpolate(const.scheme|slice(0, 2), i / const.range[1]) %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
         "    <td>{{ i }}V</td>",
         "  </tr>",
         "{% endfor %}",
         "",
-        "{% for i in range(3000, 25000, 2000) %}",
-        "  {% set color = colorInterpolate([ 'blue', 'red' ], (i - 1000) / 24000) %}",
+        "{% for i in range(const.range[1] + const.infoSteps[1], const.range[2], const.infoSteps[1]) %}",
+        "  {% set color = colorInterpolate(const.scheme|slice(1, 2), (i - const.range[1]) / (const.range[2] - const.range[1])) %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
         "    <td>{{ i }}V</td>",
         "  </tr>",
         "{% endfor %}",
         "",
+        "{% set color = const.scheme[1] %}",
         "  <tr>",
         "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
-        "    <td>{{ trans('direct current') }}</td>",
+        "    <td>{{ trans('tag:frequency=0') }}</td>",
         "  </tr>",
         "",
         "  <tr>",
         "    <td>{{ markerLine({ 'styles': [ 'casing', 'default' ], 'style:casing': { 'width': 3, 'color': 'white' }, 'style': { 'width': '3', 'dashArray': '5,2', 'lineCap': 'butt', 'color': color } })|raw }}</td>",
-        "    <td>{{ trans('alternating current') }}</td>",
+        "    <td>{{ trans('tag:frequency>0') }}</td>",
+        "  </tr>",
+        "",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': const.colorUnknown })|raw }}</td>",
+        "    <td>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': const.colorIllegal })|raw }}</td>",
+        "    <td>{{ trans('illegal value') }}</td>",
         "  </tr>",
         "</table>"
-    ]
+    ],
+    "const": {
+        "range": [ 0, 1000, 25000 ],
+        "infoSteps": [ 200, 2000 ],
+        "scheme": [ "#00ff00", "#003fff", "#af0000" ],
+        "colorNone": "orange",
+        "colorUnknown": "#404040",
+        "colorIllegal": "#ff0000"
+    }
 }
diff --git a/railway-gauge.json b/railway-gauge.json
new file mode 100644
index 0000000..e20de61
--- /dev/null
+++ b/railway-gauge.json
@@ -0,0 +1,82 @@
+{
+    "type": "overpass",
+    "name": {
+        "en": "Railway gauge"
+    },
+    "query": {
+        "11": "way[railway=rail][railway!~'^(platform|abandoned|disused|station|proposed|subway_entrance)$'][usage~'^(main|branch)$'];",
+        "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];"
+    },
+    "feature": {
+        "pre": "{% set gauges = tags.gauge|split(';') %}",
+        "title": "{% if tags.ref %}{{ localizedTag(tags, 'ref') }} - {% endif %}{{ localizedTag(tags, 'name')|default(localizedTag(tags, 'operator'))|default(trans('unnamed')) }}",
+        "description": "{{ tags.gauge|default(trans('unknown'))|enumerate }}",
+        "body": [
+            "{{ tagTrans('railway', tags.railway) }}<br/>",
+            "{% if tags.operator %}{{ keyTrans('operator') }}: {{ localizedTag(tags, 'operator') }}<br>{% endif %}",
+            "{% if tags.usage %}{{ keyTrans('usage') }}: {{ tagTrans('usage', tags.usage)|default(trans('unknown')) }}<br/>{% endif %}",
+            "{% if tags.service %}{{ keyTrans('service') }}: {{ tagTrans('service', tags.service ) }}<br/>{% endif %}",
+            "{{ keyTrans('gauge') }}: {{ tags.gauge|default(trans('unknown'))|enumerate }}<br/>",
+            "{% if tags.electrified == 'no' %}{{ keyTrans('electrified') }}: {{ tagTrans('electrified', 'no') }}{% elseif tags.electrified %}{{ keyTrans('electrified') }}: {{ tagTrans('electrified', tags.electrified) }}, {{ keyTrans('voltage') }}: {{ tags.voltage|default(trans('unknown')) }}, {{ keyTrans('frequency') }}: {{ tags.frequency|default(trans('unknown')) }}<br/>{% endif %}"
+        ],
+        "markerSymbol": null,
+        "listMarkerSymbol": "line",
+        "styles": "{% if gauges|length < 2 %}default{% else %}{% for i, v in gauges %}{% if i != 0 %},{% endif %}gauge{{ i }}{% endfor %}{% endif %}",
+        "style": {
+            "width": "3",
+            "color": "{% if tags.gauge %}{% if not tags.gauge|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], tags.gauge / 2000) }}{% endif %}{% else %}#404040{% endif %}"
+        },
+        "style:gauge0": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{% if not gauges[0]|matches('^[0-9]+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[0] / 2000) }}{% endif %}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}"
+        },
+        "style:gauge1": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{% if not gauges[1]|matches('^[0-9]+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[1] / 2000) }}{% endif %}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
+            "dashOffset": "5"
+        },
+        "style:gauge2": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{% if not gauges[2]|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[2] / 2000) }}{% endif %}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
+            "dashOffset": "10"
+        },
+        "style:gauge3": {
+            "width": "3",
+            "lineCap": "butt",
+            "color": "{% if not gauges[3]|matches('^\\d+$') %}#ff0000{% else %}{{ colorInterpolate([ '#00ff00', '#0000ff' ], gauges[3] / 2000) }}{% endif %}",
+            "dashArray": "5,{{ (gauges|length - 1) * 5 }}",
+            "dashOffset": "15"
+        }
+    },
+    "info": [
+        "<table>",
+        "  {% set color = '#ff0000' %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ trans('illegal value') }}</td>",
+        "  </tr>",
+        "  {% set color = '#404040' %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ trans('unknown') }}</td>",
+        "  </tr>",
+        "{% for i in range(0, 1800, 250) %}",
+        "  {% set color = colorInterpolate([ '#00ff00', '#0000ff' ], i / 2000) %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': color })|raw }}</td>",
+        "    <td>{{ i }}mm</td>",
+        "  </tr>",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ 'width': 3, 'color': '#0000ff' })|raw }}</td>",
+        "    <td>>2000mm</td>",
+        "  </tr>",
+        "</table>"
+    ]
+}
diff --git a/railway-maxspeed.json b/railway-maxspeed.json
index 1c756f2..111d5de 100644
--- a/railway-maxspeed.json
+++ b/railway-maxspeed.json
@@ -10,7 +10,7 @@
     },
     "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)$'];"
+        "14": "way[railway~'^(disused|construction|funicular|light_rail|miniature|monorail|narrow_gauge|preserved|rail|subway|tram)$'];"
     },
     "feature": {
         "pre": [
diff --git a/religion.json b/religion.json
index b3e2c5a..7e3c5aa 100644
--- a/religion.json
+++ b/religion.json
@@ -83,14 +83,88 @@
             "  {{ keyTrans('denomination') }}: {{ tagTransList('denomination', tags.denomination) }}<br/>",
             "{% endif %}"
         ],
-        "markerSign": [
-            "{% if tags.religion == 'christian' %}✝",
-            "{% elseif tags.religion == 'muslim' %}☪",
-            "{% elseif tags.religion == 'buddhist' %}☸",
-            "{% elseif tags.religion == 'hindu' %}ॐ",
-            "{% elseif tags.religion == 'jewish' %}✡",
-            "{% elseif tags.religion == 'pagan' %}☆",
-            "{% endif %}"
-        ]
+        "markerSign": "{{ const.religion[tags.religion] }}"
+    },
+    "const": {
+        "religion": {
+            "christian": "✝",
+            "muslim": "☪",
+            "buddhist": "☸",
+            "shinto": "",
+            "hindu": "ॐ",
+            "jewish": "✡",
+            "taoist": "",
+            "sikh": "",
+            "none": "",
+            "multifaith": "",
+            "unitarian_universialist": "",
+            "spiritualist": "",
+            "jain": "",
+            "voodoo": "",
+            "confucian": "",
+            "bahai": "",
+            "caodaism": "",
+            "tenrikyo": "",
+            "vietnamese_folk": "",
+            "pagan": "☆",
+            "scientologist": "",
+            "zoroastrian": "",
+            "pentecostal": "",
+            "shamanic": ""
+        }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "query": "nwr[{{ value }}]",
+            "type": "select",
+            "values": {
+              "place_of_worship": {
+                "name": "{{ tagTrans('amenity', 'place_of_worship') }}",
+                "query": "nwr[amenity=place_of_worship]"
+              },
+              "grave_yard": {
+                "name": "{{ tagTrans('amenity', 'grave_yard') }}",
+                "query": "nwr[amenity=grave_yard]"
+              },
+              "crematorium": {
+                "name": "{{ tagTrans('amenity', 'crematorium') }}",
+                "query": "nwr[amenity=crematorium]"
+              },
+              "cemetery": {
+                "name": "{{ tagTrans('landuse', 'cemetery') }}",
+                "query": "nwr[landuse=cemetery]"
+              },
+              "wayside_cross": {
+                "name": "{{ tagTrans('historic', 'wayside_cross') }}",
+                "query": "nwr[historic=wayside_cross]"
+              },
+              "wayside_shrine": {
+                "name": "{{ tagTrans('historic', 'wayside_shrine') }}",
+                "query": "nwr[historic=wayside_shrine]"
+              },
+              "wayside_chapel": {
+                "name": "{{ tagTrans('historic', 'wayside_chapel') }}",
+                "query": "nwr[historic=wayside_chapel]"
+              },
+              "parish": {
+                "name": "{{ tagTrans('office', 'parish') }}",
+                "query": "nwr[office=parish]"
+              },
+              "office": {
+                "name": "{{ tagTrans('office', 'religion') }}",
+                "query": "nwr[office=religion]"
+              }
+            }
+        },
+        "religion": {
+            "name": "{{ keyTrans('religion') }}",
+            "show_default": "true",
+            "type": "select",
+            "valueName": "{{ tagTrans('religion', value) }}",
+            "values": "{% set list = [] %}{% for t, v in const.religion %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('religion', t) }}</option>{% endfor %}<option value='other' query='nwr[religion][religion!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>",
+            "op": "has"
+        }
     }
 }
diff --git a/roads.json b/roads.json
new file mode 100644
index 0000000..9d7fb33
--- /dev/null
+++ b/roads.json
@@ -0,0 +1,111 @@
+{
+    "type": "overpass",
+    "query": {
+        "10": "way[highway~'^(motorway|trunk)']",
+        "12": "way[highway~'^(motorway|trunk|primary)']",
+        "13": "way[highway~'^(motorway|trunk|primary|secondary)']",
+        "14": "way[highway~'^(motorway|trunk|primary|secondary|tertiary)']",
+        "15": "way[highway~'^(motorway|trunk|primary|secondary|tertiary|pedestrian|unclassified)']",
+        "16": "way[highway~'^(motorway|trunk|primary|secondary|tertiary|pedestrian|unclassified|residential)']",
+        "17": "way[highway~'^(motorway|trunk|primary|secondary|tertiary|pedestrian|unclassified|residential|living_street|service)']",
+        "18": "way[highway][highway!~'^(raceway|bus_guideway)$']"
+    },
+    "feature": {
+        "pre": [
+            "{% set highway = tags.highway %}{% set is_link = false %}",
+            "{% if tags.highway|matches('_link$') %}",
+            "  {% set highway = tags.highway|slice(0, tags.highway|length - 5) %}{% set is_link = true %}",
+            "{% endif %}"
+        ],
+        "description": "{{ tagTrans('highway', tags.highway) }}",
+        "priority": "{{ const.priorities[highway]|default(50) + (is_link ? 0.5 : 0) }}",
+        "markerSymbol": "",
+        "listMarkerSymbol": "line",
+        "style": {
+            "width": "{{ is_link ? 2 : 4 }}",
+            "color": "{{ const.colors[highway]|default('#ff0000') }}",
+            "text": "  {{ localizedTag(tags, 'name') }}              ",
+            "textRepeat": "1",
+            "textFontWeight": "bold"
+        }
+    },
+    "info": [
+        "<table>",
+        "{% for k, color in const.colors  %}",
+        "  {% if map.zoom >= const.zooms[k] %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ \"width\": \"4\", \"color\": color })|raw }}</td>",
+        "    <td>{{ tagTrans('highway', k) }}</td>",
+        "  </tr>",
+        "  {% endif %}",
+        "{% endfor %}",
+        "  <tr>",
+        "    <td>{{ markerLine({ \"width\": \"2\", \"color\": const.colors.motorway })|raw }}</td>",
+        "    <td>{{ tagTrans('highway', 'motorway_link') }}</td>",
+        "  </tr>",
+        "  <tr>",
+        "    <td>{{ markerLine({ \"width\": \"4\", \"color\": \"#ff0000\" })|raw }}</td>",
+        "    <td>{{ trans('invalid value') }}</td>",
+        "  </tr>",
+        "</table>"
+    ],
+    "const": {
+        "priorities": {
+            "motorway": 1,
+            "trunk": 2,
+            "primary": 10,
+            "secondary": 11,
+            "tertiary": 12,
+            "pedestrian": 20,
+            "unclassified": 21,
+            "residential": 22,
+            "living_street": 23,
+            "service": 24,
+            "track": 30,
+            "escape": 31,
+            "cycleway": 41,
+            "bridleway": 42,
+            "footway": 43,
+            "path": 44,
+            "steps": 45
+        },
+        "colors": {
+            "motorway": "#ff2f2f",
+            "trunk": "#ff4f4f",
+            "primary": "#ff7f00",
+            "secondary": "#ffaf00",
+            "tertiary": "#ffff00",
+            "pedestrian": "#ff00ff",
+            "unclassified": "#4f4fff",
+            "residential": "#7f4fff",
+            "living_street": "#af2fff",
+            "service": "#4f4f7f",
+            "track": "#bb6300",
+            "escape": "#bb3300",
+            "cycleway": "#7faf00",
+            "bridleway": "#00af7f",
+            "footway": "#00af00",
+            "path": "#007f00",
+            "steps": "#00af00"
+        },
+        "zooms": {
+            "motorway": 10,
+            "trunk": 10,
+            "primary": 12,
+            "secondary": 13,
+            "tertiary": 14,
+            "pedestrian": 15,
+            "unclassified": 15,
+            "residential": 16,
+            "living_street": 17,
+            "service": 17,
+            "track": 18,
+            "escape": 18,
+            "cycleway": 18,
+            "bridleway": 18,
+            "footway": 18,
+            "path": 18,
+            "steps": 18
+        }
+    }
+}
diff --git a/shop.json b/shop.json
index ce8c8cb..b480f9e 100644
--- a/shop.json
+++ b/shop.json
@@ -24,131 +24,375 @@
         "16": "(node[shop];way[shop];relation[shop];);"
     },
     "feature": {
-        "pre": "{% set shop0 = tags.shop|split(';')[0] %}{% set current = const.default %}{% for v in const.shops %}{% if shop0 in v.types %}{% set current = v %}{% endif %}{% endfor %}",
-        "description": "{{ tagTransList('shop', tags.shop) }}",
-        "markerSign": "{% set c = current.sign %}{% if c|slice(0, 3) == 'fa-' %}<i class=\"fa {{ c }}\"></i>{% else %}{{ c|raw }}{% endif %}"
+        "pre": [
+            "{% set shop0 = tags.shop|split(';')[0] %}",
+            "{% set current = const.default %}",
+            "{% if const.shops[shop0] %}",
+            "  {% set current = const.shops[shop0] %}",
+            "{% endif %}"
+        ],
+        "description": [
+            "{% if tags.shop == 'yes' %}",
+            "  {{ keyTrans('shop') }}",
+            "{% else %}",
+            "  {{ tagTransList('shop', tags.shop) }}",
+            "{% endif %}"
+        ],
+        "markerSign": [
+            "{% set c = current.sign %}",
+            "{% if c|slice(0, 4) == 'fas:' %}",
+            "  <i class=\"fas fa-{{ c|slice(4) }}\"></i>",
+            "{% elseif c|slice(0, 4) == 'far:' %}",
+            "  <i class=\"far fa-{{ c|slice(4) }}\"></i>",
+            "{% elseif c|slice(0, 5) == 'maki:' %}",
+            "  <img data-src=\"{{ c }}\">",
+            "{% else %}",
+            "  {{ c|raw }}",
+            "{% endif %}"
+        ],
+        "body": [
+            "<ul>",
+            "  {% if tags.clothes %}",
+            "  <li class='hasSymbol'>",
+            "    <i class=\"fas fa-tshirt\" aria-hidden=\"true\"></i>",
+            "    <span class='key'>{{ keyTrans('clothes') }}:</span>",
+            "    <span class='value'>{{ tagTransList('clothes', tags.clothes) }}</span>",
+            "  </li>",
+            "  {% endif %}",
+            "</ul>"
+        ]
     },
     "const": {
         "default": {
-            "sign": "fa-shopping-bag"
+            "sign": "fas:shopping-bag"
         },
-        "shops": [
-            {
-                "types": [
-                    "alcohol",
-                    "beverages"
-                ],
-                "sign": "fa-beer"
-            },
-            {
-                "types": [
-                    "baby_goods"
-                ],
-                "sign": "&#128700;"
-            },
-            {
-                "types": [
-                    "bag",
-                    "general"
-                ],
-                "sign": "fa-shopping-bag"
-            },
-            {
-                "types": [
-                    "bakery",
-                    "confectionery",
-                    "pastry"
-                ],
-                "sign": "fa-birthday-cake"
-            },
-            {
-                "types": [
-                    "boutique",
-                    "clothes",
-                    "fabric",
-                    "fashion",
-                    "leather",
-                    "sewing",
-                    "tailor"
-                ],
+        "shops": {
+            "vacant": {
+                "sign": "fas:times"
+            },
+            "alcohol": {
+                "sign": "fas:wine-bottle"
+            },
+            "wine": {
+                "sign": "fas:wine-bottle"
+            },
+            "beverages": {
+                "sign": "fas:wine-bottle"
+            },
+            "baby_goods": {
+                "sign": "fas:baby"
+            },
+            "bag": {
+                "sign": "fas:shopping-bag"
+            },
+            "general": {
+                "sign": "fas:shopping-bag"
+            },
+            "variety_store": {
+                "sign": "fas:shopping-bag"
+            },
+            "bakery": {
+                "sign": "fas:birthday-cake"
+            },
+            "confectionery": {
+                "sign": "fas:birthday-cake"
+            },
+            "pastry": {
+                "sign": "fas:birthday-cake"
+            },
+            "bicycle": {
+                "sign": "fas:bicycle"
+            },
+            "motorcycle": {
+                "sign": "fas:motorcycle"
+            },
+            "boutique": {
+                "sign": "&#128090;"
+            },
+            "clothes": {
+                "sign": "&#128090;"
+            },
+            "fabric": {
+                "sign": "&#128090;"
+            },
+            "fashion": {
+                "sign": "&#128090;"
+            },
+            "leather": {
+                "sign": "&#128090;"
+            },
+            "sewing": {
+                "sign": "&#128090;"
+            },
+            "tailor": {
                 "sign": "&#128090;"
             },
-            {
-                "types": [
-                    "butcher",
-                    "cheese",
-                    "chocolate",
-                    "deli",
-                    "dairy",
-                    "farm",
-                    "greengrocer",
-                    "pasta",
-                    "spices"
-                ],
-                "sign": "fa-cutlery"
-            },
-            {
-                "types": [
-                    "coffee",
-                    "tea"
-                ],
-                "sign": "fa-coffee"
-            },
-            {
-                "types": [
-                    "convenience"
-                ],
-                "sign": "fa-shopping-basket"
-            },
-            {
-                "types": [
-                    "department_store",
-                    "mall"
-                ],
-                "sign": "fa-building"
-            },
-            {
-                "types": [
-                    "hairdresser"
-                ],
+            "dry_cleaning": {
+                "sign": "&#128090;"
+            },
+            "sea_food": {
+                "sign": "fas:fish"
+            },
+            "butcher": {
+                "sign": "fas:utensils"
+            },
+            "cheese": {
+                "sign": "fas:utensils"
+            },
+            "chocolate": {
+                "sign": "fas:utensils"
+            },
+            "deli": {
+                "sign": "fas:utensils"
+            },
+            "dairy": {
+                "sign": "fas:utensils"
+            },
+            "farm": {
+                "sign": "fas:utensils"
+            },
+            "greengrocer": {
+                "sign": "fas:utensils"
+            },
+            "pasta": {
+                "sign": "fas:utensils"
+            },
+            "spices": {
+                "sign": "fas:utensils"
+            },
+            "coffee": {
+                "sign": "fas:coffee"
+            },
+            "tea": {
+                "sign": "fas:coffee"
+            },
+            "convenience": {
+                "sign": "fas:shopping-basket"
+            },
+            "department_store": {
+                "sign": "fas:building"
+            },
+            "mall": {
+                "sign": "fas:building"
+            },
+            "electronics": {
+                "sign": "fas:tv"
+            },
+            "computer": {
+                "sign": "fas:desktop"
+            },
+            "electrical": {
+                "sign": "fas:bolt"
+            },
+            "lighting": {
+                "sign": "fas:bulb"
+            },
+            "fishing": {
+                "sign": "fas:fish"
+            },
+            "toys": {
+                "sign": "fas:dice"
+            },
+            "florist": {
+                "sign": "&#127799;"
+            },
+            "garden_centre": {
+                "sign": "&#127799;"
+            },
+            "hairdresser": {
                 "sign": "&#128113;"
             },
-            {
-                "types": [
-                    "ice_cream"
-                ],
-                "sign": "&#127848;"
-            },
-            {
-                "types": [
-                    "jewelry"
-                ],
-                "sign": "&#128141;"
-            },
-            {
-                "types": [
-                    "kiosk"
-                ],
-                "sign": "fa-newspaper-o"
-            },
-            {
-                "types": [
-                    "shoes"
-                ],
-                "sign": "&#128095;"
-            },
-            {
-                "types": [
-                    "supermarket"
-                ],
-                "sign": "fa-shopping-cart"
-            },
-            {
-                "types": [
-                    "watches"
-                ],
-                "sign": "&#8986;"
+            "ice_cream": {
+                "sign": "fas:ice-cream"
+            },
+            "jewelry": {
+                "sign": "fas:ring"
+            },
+            "kiosk": {
+                "sign": "fas:newspaper"
+            },
+            "newsagent": {
+                "sign": "fas:newspaper"
+            },
+            "shoes": {
+                "sign": "fas:shoe-prints"
+            },
+            "travel_agency": {
+                "sign": "&#129523;"
+            },
+            "supermarket": {
+                "sign": "fas:shopping-cart"
+            },
+            "watches": {
+                "sign": "far:clock"
+            },
+            "gift": {
+                "sign": "fas:gift"
+            },
+            "locksmith": {
+                "sign": "fas:key"
+            },
+            "houseware": {
+                "sign": "fas:tools"
+            },
+            "doityourself": {
+                "sign": "fas:tools"
+            },
+            "hardware": {
+                "sign": "fas:tools"
+            },
+            "art": {
+                "sign": "fas:palette"
+            },
+            "stationery": {
+                "sign": "fas:pencil-ruler"
+            },
+            "funeral_directors": {
+                "sign": "maki:monument"
+            },
+            "copyshop": {
+                "sign": "fas:copy"
+            },
+            "tobacco": {
+                "sign": "fas:smoking"
+            },
+            "furniture": {
+                "sign": "fas:couch"
+            },
+            "interior_decoration": {
+                "sign": "fas:couch"
+            },
+            "car_repair": {
+                "sign": "fas:car"
+            },
+            "car": {
+                "sign": "fas:car"
+            },
+            "car_parts": {
+                "sign": "fas:car"
+            },
+            "tyres": {
+                "sign": "fas:car"
+            },
+            "beauty": {
+                "sign": ""
+            },
+            "cosmetics": {
+                "sign": ""
+            },
+            "music": {
+                "sign": "fas:guitar"
+            },
+            "optician": {
+                "sign": "fas:glasses"
+            },
+            "books": {
+                "sign": "fas:book"
+            },
+            "sports": {
+                "sign": "fas:basketball-ball"
+            },
+            "chemist": {
+                "sign": "fas:tablets"
+            },
+            "pet": {
+                "sign": "fas:paw"
+            },
+            "photo": {
+                "sign": "fas:camera"
+            },
+            "ticket": {
+                "sign": "fas:ticket-alt"
+            },
+            "outdoor": {
+                "sign": "fas:campground"
+            },
+            "massage": {
+                "sign": ""
+            },
+            "paint": {
+                "sign": "fas:paint-roller"
+            },
+            "fabric": {
+                "sign": ""
+            },
+            "trade": {
+                "sign": "fas:tools"
+            },
+            "bookmaker": {
+                "sign": "fas:money-bill-wave"
+            },
+            "kitchen": {
+                "sign": "fas:utensils"
+            },
+            "second_hand": {
+                "sign": ""
+            },
+            "lottery": {
+                "sign": "fas:money-bill-wave"
+            },
+            "pawnbroker": {
+                "sign": "fas:money-bill-wave"
+            },
+            "bed": {
+                "sign": "fas:bed"
+            },
+            "charity": {
+                "sign": "fas:hand-holding-heart"
+            },
+            "tattoo": {
+                "sign": ""
+            },
+            "mobile_phone": {
+                "sign": "fas:mobile-alt"
             }
+        },
+        "clothes": [
+            "women",
+            "men",
+            "leather",
+            "fur",
+            "underwear",
+            "children",
+            "wedding",
+            "sports",
+            "workwear",
+            "lingerie",
+            "babies",
+            "hats",
+            "fashion",
+            "suits",
+            "unisexs",
+            "traditional",
+            "costumes",
+            "bridal",
+            "oversize",
+            "swimwear",
+            "maternity",
+            "brand",
+            "military",
+            "vintage",
+            "accessories",
+            "schoolwear",
+            "motorcycle",
+            "denim"
         ]
+    },
+    "filter": {
+        "shop": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for k, v in const.shops %}<option value=\"{{ k }}\">{% set list = list|merge([ k ]) %}{{ tagTrans('shop', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[shop][shop!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "sort": "natsort",
+            "op": "has"
+        },
+        "clothes": {
+            "name": "{{ keyTrans('clothes') }}",
+            "type": "select",
+            "values": "{% set list = [] %}<option weight='-1' value='*' query='nwr[clothes]'>{{ trans('any value') }}</option>{% for k in const.clothes %}{% set list = list|merge([ k ]) %}<option value='{{ k }}'>{{ tagTrans('clothes', k) }}</option>{% endfor %}<option weight='1' value='other' query='nwr[clothes][clothes!~\"^(|.*;)({{ list|join('|') }})(|;.*)$\"]'>{{ trans('other') }}</option>",
+            "sort": "natsort",
+            "op": "has"
+        }
     }
 }
diff --git a/sport.json b/sport.json
index 2caadbc..1133f89 100644
--- a/sport.json
+++ b/sport.json
@@ -56,7 +56,7 @@
         "motocross": "🏍",
         "motor": "🏎",
         "rugby": "🏉",
-        "rugby_leage": "🏉",
+        "rugby_league": "🏉",
         "rugby_union": "🏉",
         "running": "🏃",
         "sailing": "⛵",
@@ -68,5 +68,13 @@
         "tennis": "🎾",
         "volleyball": "🏐",
         "weightlifting": "🏋"
+    },
+    "filter": {
+        "sport": {
+            "name": "{{ keyTrans('sport') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('sport', t) }}</option>{% endfor %}<option value='other' query='nwr[sport][sport!~\"^({{ list|join('|') }})$\"]'>{{ trans('other') }}</option>"
+        }
     }
 }
diff --git a/swimming_bathing.json b/swimming_bathing.json
index def3505..98e8aee 100644
--- a/swimming_bathing.json
+++ b/swimming_bathing.json
@@ -139,5 +139,13 @@
             "zoom": 16,
             "sign": "🚿 "
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ tagTrans(k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/tourism_attractions.json b/tourism_attractions.json
index d69b2b4..8f22154 100644
--- a/tourism_attractions.json
+++ b/tourism_attractions.json
@@ -56,5 +56,16 @@
         "theme_park": "<img data-src='maki:amusement-park'>",
         "viewpoint": "<i class='fas fa-eye' aria-hidden='true'></i>",
         "zoo": "🦁"
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "query": "nwr[{{ value }}]",
+            "type": "select",
+            "key": "tourism",
+            "values": "{% set list = [] %}{% for t, v in const %}<option value=\"{{ t }}\">{% set list = list|merge([ t ]) %}{{ tagTrans('tourism', t) }}</option>{% endfor %}",
+            "op": "has"
+        }
     }
 }
diff --git a/tourism_services.json b/tourism_services.json
index 4901f18..0a7f5dd 100644
--- a/tourism_services.json
+++ b/tourism_services.json
@@ -141,5 +141,13 @@
             "sign": "ℹ️",
             "zoom": 16
         }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "show_default": "true",
+            "type": "select",
+            "values": "{% for k, v in const %}<option value=\"{{ k }}\" query=\"nwr[{{ k }}]\" minzoom=\"{{ v.zoom }}\">{{ trans('tag:' ~ k) }}</option>{% endfor %}"
+        }
     }
 }
diff --git a/waste.json b/waste.json
index 0895142..a91c4aa 100644
--- a/waste.json
+++ b/waste.json
@@ -18,58 +18,67 @@
         "13": [
             "(",
             "node[landuse=landfill];",
-            "node[man_made=wastewater_plant];",
+            "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "node[amenity=recycling][recycling_type=centre];",
             "way[landuse=landfill];",
-            "way[man_made=wastewater_plant];",
+            "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "way[amenity=recycling][recycling_type=centre];",
             "relation[landuse=landfill];",
-            "relation[man_made=wastewater_plant];",
+            "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
             "relation[amenity=recycling][recycling_type=centre];",
+            "nwr[amenity=waste_transfer_station];",
+            "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ],
         "15": [
             "(",
             "node[landuse=landfill];",
-            "node[man_made=wastewater_plant];",
-            "node[amenity=recycling];",
+            "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
+            "node[amenity~\"^(recycling|waste_disposal|waste_transfer_station)$\"];",
             "way[landuse=landfill];",
-            "way[man_made=wastewater_plant];",
-            "way[amenity=recycling];",
+            "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
+            "way[amenity~\"^(recycling|waste_disposal|waste_transfer_station)$\"];",
             "relation[landuse=landfill];",
-            "relation[man_made=wastewater_plant];",
-            "relation[amenity=recycling];",
+            "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
+            "relation[amenity~\"^(recycling|waste_disposal|waste_transfer_station)$\"];",
+            "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ],
         "18": [
             "(",
             "node[landuse=landfill];",
-            "node[man_made=wastewater_plant];",
-            "node[amenity~\"^(recycling|waste_basket)$\"];",
+            "node[man_made~\"^(wastewater_plant|incinerator)$\"];",
+            "node[amenity~\"^(recycling|waste_basket|waste_disposal|waste_transfer_station)$\"];",
             "way[landuse=landfill];",
-            "way[man_made=wastewater_plant];",
-            "way[amenity=recycling];",
+            "way[man_made~\"^(wastewater_plant|incinerator)$\"];",
+            "way[amenity~\"^(recycling|waste_basket|waste_disposal|waste_transfer_station)$\"];",
             "relation[landuse=landfill];",
-            "relation[man_made=wastewater_plant];",
-            "relation[amenity=recycling];",
+            "relation[man_made~\"^(wastewater_plant|incinerator)$\"];",
+            "relation[amenity~\"^(recycling|waste_basket|waste_disposal|waste_transfer_station)$\"];",
+            "nwr[power=generator][\"generator:source\"~\"^(.*;|)waste(;.*|)$\"];",
             ")"
         ]
     },
     "feature": {
         "pre": [
+            "{% set add = '' %}",
             "{% if tags.landuse == 'landfill' %}",
             "  {% set key = 'landuse' %}",
             "  {% set value = tags.landuse %}",
-            "{% elseif tags.man_made == 'wastewater_plant' %}",
+            "{% elseif tags.man_made in [ 'incinerator', 'wastewater_plant' ] %}",
             "  {% set key = 'man_made' %}",
             "  {% set value = tags.man_made %}",
-            "{% elseif tags.amenity == 'recycling' or tags.amenity == 'waste_basket' %}",
+            "{% elseif tags.amenity in [ 'recycling', 'waste_basket', 'waste_disposal', 'waste_transfer_station' ] %}",
             "  {% set key = 'amenity' %}",
             "  {% set value = tags.amenity %}",
+            "{% elseif tags.power == 'generator' %}",
+            "  {% set key = 'power' %}",
+            "  {% set value = tags.power %}",
+            "  {% set add = '(' ~ tagTransList('generator:source', attribute(tags, 'generator:source')) ~ ')' %}",
             "{% endif %}",
             "{% set kv = key ~ '=' ~ value %}"
         ],
-        "description": "{{ tagTrans(key, value) }}",
+        "description": "{{ tagTrans(key, value) }} {{ add }}",
         "body": [
             "{% if tags.recycling_type %}",
             "{{ keyTrans('recycling_type') }}: {{ tagTrans('recycling_type', tags.recycling_type) }}",
@@ -89,7 +98,7 @@
         "  {% set value  = kv|split('=')[1] %}",
         "  <tr>",
         "    <td>{{ markerCircle({})|raw }}<div class='sign'>{{ data.sign|raw }}</div></td>",
-        "    <td>{{ tagTrans('leisure', value) }}</td>",
+        "    <td>{{ tagTrans(key, value) }}{% if data.add %} ({{ trans(data.add) }}){% endif %}</td>",
         "  </tr>",
         "  {% endif %}",
         "{% endfor %}",
@@ -102,11 +111,28 @@
     "const": {
         "amenity=recycling": {
             "minZoom": 13,
-            "sign": "<img src='maki:recycling'>"
+            "sign": "<img data-src='maki:recycling'>"
+        },
+        "man_made=wastewater_plant": {
+            "minZoom": 13,
+            "sign": "<i class='fas fa-water'></i>"
+        },
+        "man_made=incinerator": {
+            "minZoom": 13,
+            "sign": "<i class='fas fa-burn'></i>"
+        },
+        "power=generator": {
+            "minZoom": 13,
+            "sign": "<i class='fas fa-bolt'></i>",
+            "add": "tag:generator:source=waste"
+        },
+        "amenity=waste_disposal": {
+            "minZoom": 15,
+            "sign": "<img data-src='maki:waste-basket'>"
         },
         "amenity=waste_basket": {
             "minZoom": 18,
-            "sign": "<img src='maki:waste-basket'>"
+            "sign": "<img data-src='maki:waste-basket'>"
         }
     }
 }
diff --git a/water.json b/water.json
index a2d7f22..1b08673 100644
--- a/water.json
+++ b/water.json
@@ -12,111 +12,258 @@
         "10": [
             "(",
             "way[waterway~\"^(river|canal)$\"];",
-            "way[natural~\"^(divide)$\"];",
+            "nwr[natural~\"^(divide|bay|strait)$\"];",
             "way[natural=water][water~\"^(lake|lagoon|reservoir|canal)$\"];",
             "relation[natural=water][type=multipolygon][water~\"^(lake|lagoon|reservoir|canal)$\"];",
             ")"
         ],
         "13": [
             "(",
-            "node[natural~\"^(water|divide)$\"];",
-            "way[natural~\"^(water|divide)$\"];",
+            "nwr[natural~\"^(water|divide|bay|strait|spring|hot_spring|geyser)$\"];",
             "relation[type=multipolygon][natural=water];",
             "relation[type=multipolygon][waterway=riverbank];",
-            "way[waterway];",
+            "nwr[waterway];",
             ")"
         ]
     },
     "feature": {
-        "description": [
+        "pre": [
             "{% if tags.waterway %}",
-            "{{ tagTrans('waterway', tags.waterway) }}",
+            "  {% set key = 'waterway' %}",
+            "  {% set value = tags.waterway %}",
             "{% elseif tags.water %}",
-            "{{ tagTrans('water', tags.water) }}",
+            "  {% set key = 'water' %}",
+            "  {% set value = tags.water %}",
             "{% elseif tags.natural %}",
-            "{{ tagTrans('natural', tags.natural) }}",
+            "  {% set key = 'natural' %}",
+            "  {% set value = tags.natural %}",
+            "{% endif %}",
+            "{% set kv = key ~ '=' ~ value %}",
+            "{% set data = const[kv]|default(const['natural=water']) %}"
+        ],
+        "description": [
+            "{{ tagTrans(key, value) }}"
+        ],
+        "body": [
+            "<ul>",
+            "{% if tags.intermittent %}",
+            "  <li class='hasSymbol'>",
+            "   <i class=\"far fa-circle\"></i>",
+            "   <span class='key'>{{ keyTrans('intermittent') }}:</span>",
+            "   <span class='value'>{{ tagTrans('intermittent', tags.intermittent) }}</span>",
+            "{% endif %}",
+            "</ul>"
+        ],
+        "markerSign": [
+            "{{ const[kv].sign|raw }}"
+        ],
+        "markerSymbol": [
+            "{% if data.symbol == 'pointer' %}",
+            "{{ markerPointer({ fillColor: '#3388ff' })|raw }}",
             "{% endif %}"
         ],
-        "markerSymbol": null,
         "listMarkerSymbol": [
-            "{% if tags.natural == 'water' %}",
+            "{% if data.symbol == 'pointer' %}",
+            "{{ markerCircle({ fillColor: '#3388ff' })|raw }}",
+            "{% elseif data.symbol == 'polygon' %}",
             "polygon",
             "{% else %}",
             "line",
             "{% endif %}"
         ],
-        "priority": [
-            "{% if tags.natural == 'divide' %}",
-            "0",
-            "{% elseif tags.natural == 'water' and tags.water in ['lake', 'lagoon', 'reservoir', 'canal'] %}",
-            "0",
-            "{% elseif tags.waterway == 'river' %}",
-            "1",
-            "{% elseif tags.waterway == 'stream' or tags.waterway == 'drain' %}",
-            "3",
-            "{% elseif tags.waterway == 'ditch' %}",
-            "5",
-            "{% else %}",
-            "2",
-            "{% endif %}"
-        ],
+        "priority": "{{ data.priority }}",
         "style": {
-            "width": [
-                "{% if tags.waterway == 'river' %}",
-                "4",
-                "{% elseif tags.waterway == 'stream' or tags.waterway == 'drain' %}",
-                "2",
-                "{% elseif tags.waterway == 'ditch' %}",
-                "1",
-                "{% else %}",
-                "3",
-                "{% endif %}"
-            ],
-            "color": [
-                "{% if tags.natural == 'divide' %}",
-                "#ff0000",
-                "{% elseif tags.waterway in [ 'dam', 'weir' ] %}",
-                "#000000",
-                "{% else %}",
-                "#3388ff",
-                "{% endif %}"
-            ],
+            "width": "{{ data.style.width }}",
+            "color": "{{ data.style.color }}",
             "text": [
-                "{% if type=='way' and tags.waterway in [ 'river', 'stream', 'canal', 'ditch', 'wadi', 'drystream', 'drain' ] %}",
+                "{% if data.text %}",
                 "{{ tags.name }}   ➔   ",
                 "{% endif %}"
             ],
-            "textRepeat": "1"
+            "textRepeat": "1",
+            "dashArray": "{% if tags.intermittent == 'yes' %}5,5{% endif %}",
+            "lineCap": "{% if tags.intermittent == 'yes' %}butt{% else %}round{% endif %}"
+        }
+    },
+    "const": {
+        "natural=water": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "priority": 2
+        },
+        "water=lake": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "hideInfo": true,
+            "priority": 0
+        },
+        "water=lagoon": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "hideInfo": true,
+            "priority": 0
+        },
+        "water=reservoir": {
+            "zoom": 10,
+            "symbol": "polygon",
+            "style": {
+                "width": 3,
+                "color": "#3388ff"
+            },
+            "hideInfo": true,
+            "priority": 0
+        },
+        "waterway=river": {
+            "zoom": 10,
+            "symbol": "line",
+            "style": {
+                "width": 4,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 1
+        },
+        "waterway=canal": {
+            "alias": [
+                "water=canal"
+            ],
+            "zoom": 10,
+            "symbol": "line",
+            "style": {
+                "width": 4,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 1
+        },
+        "waterway=stream": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 2,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 3
+        },
+        "waterway=drain": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 2,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 3
+        },
+        "waterway=ditch": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 1,
+                "color": "#3388ff"
+            },
+            "text": true,
+            "priority": 5
+        },
+        "natural=spring": {
+            "sign": "<i class='fas fa-water'></i>",
+            "zoom": 13,
+            "symbol": "pointer"
+        },
+        "natural=hot_spring": {
+            "sign": "<i style='color: orange;' class='fas fa-water'></i>",
+            "zoom": 13,
+            "symbol": "pointer"
+        },
+        "natural=geyser": {
+            "sign": "<i style='color: red;' class='fas fa-water'></i>",
+            "zoom": 13,
+            "symbol": "pointer"
+        },
+        "waterway=waterfall": {
+            "sign": "<img data-src='maki:waterfall'>",
+            "zoom": 13,
+            "symbol": "pointer"
+        },
+        "waterway=dam": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 3,
+                "color": "#000000"
+            },
+            "priority": 3
+        },
+        "waterway=weir": {
+            "zoom": 13,
+            "symbol": "line",
+            "style": {
+                "width": 3,
+                "color": "#000000"
+            },
+            "priority": 3
+        },
+        "natural=divide": {
+            "zoom": 10,
+            "symbol": "line",
+            "style": {
+                "width": 3,
+                "color": "#ff0000"
+            },
+            "text": true,
+            "priority": 0
+        }
+    },
+    "filter": {
+        "type": {
+            "name": "{{ trans('filter:type') }}",
+            "key": "natural",
+            "type": "select",
+            "show_default": "true",
+            "values": "{% for k, data in const %}<option value=\"{{ k }}\" query=\"(nwr[{{ k }}];{% for a in data.alias %}nwr[{{ a }}];{% endfor %})\">{{ tagTrans(k) }}</option>{% endfor %}",
+            "sort": "natsort"
+        },
+        "intermittent": {
+            "name": "{{ keyTrans('intermittent') }}",
+            "key": "intermittent",
+            "type": "radio",
+            "values": "<option value='yes' query=\"nwr[intermittent][intermittent!=no]\">{{ tagTrans('intermittent', 'yes') }}</option><option value='no' query=\"(nwr[!intermittent];nwr[intermittent=no];)\">{{ tagTrans('intermittent', 'no') }}</option>"
         }
     },
     "info": [
         "<table>",
+        "  {% for k, data in const %}",
+        "    {% if not data.hideInfo and data.zoom <= map.zoom %}",
+        "    <tr>",
+        "      <td>",
+        "      {% if data.symbol == 'pointer' %}",
+        "        {{ markerCircle({ fillColor: '#3388ff' })|raw }}<div class='sign'>{{ data.sign|raw }}</div>",
+        "      {% elseif data.symbol == 'polygon' %}",
+        "        {{ markerPolygon(data.style)|raw }}",
+        "      {% elseif data.symbol == 'line' %}",
+        "        {{ markerLine(data.style)|raw }}",
+        "      {% endif %}",
+        "      </td>",
+        "      <td>{{ tagTrans(k) }}</td>",
+        "    </tr>",
+        "    {% endif %}",
+        "  {% endfor %}",
         "  <tr>",
-        "    <td>{{ markerPolygon(evaluate({ \"natural\": \"water\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('natural', 'water') }}</td>",
-        "  </tr>",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"river\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'river') }},",
-        " {{ tagTrans('waterway', 'canal') }}</td>",
-        "  </tr>",
-        "{% if map.zoom >= 13 %}",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"stream\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'stream') }}, {{ tagTrans('waterway', 'drain') }}</td>",
-        "  </tr>",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"ditch\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'ditch') }}</td>",
-        "  </tr>",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"waterway\": \"dam\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('waterway', 'dam') }}, {{ tagTrans('waterway', 'weir') }}</td>",
-        "  </tr>",
-        "{% endif %}",
-        "  <tr>",
-        "    <td>{{ markerLine(evaluate({ \"natural\": \"divide\" }))|raw }}</td>",
-        "    <td>{{ tagTrans('natural', 'divide') }}</td>",
+        "    <td>{{ markerLine({ width: 3, color: '#3388ff', dashArray: '5,5', lineCap: 'butt' })|raw }}</td>",
+        "    <td>{{ keyTrans('intermittent') }}</td>",
         "  </tr>",
         "</table>"
     ]
diff --git a/works.json b/works.json
index b9d6bca..dec86ab 100644
--- a/works.json
+++ b/works.json
@@ -11,7 +11,7 @@
         "ja": "工場",
         "nl": "Fabrieken",
         "pt": "Fábricas",
-        "pt-br": "Fábricas",
+        "pt-br": "Produção",
         "ru": "Промышленность"
     },
     "query": {