diff --git a/prometheus/files/alertmanager.yml b/prometheus/files/alertmanager.yml
index bd3bafd..3221b44 100644
--- a/prometheus/files/alertmanager.yml
+++ b/prometheus/files/alertmanager.yml
@@ -27,6 +27,12 @@
   {{ match_re.label }}: {{ match_re.value }}
   {%- endfor %}
 {%- endif %}
+{%- if route.match is defined %}
+match:
+  {%- for match in route.match %}
+  {{ match.label }}: {{ match.value }}
+  {%- endfor %}
+{%- endif %}
 {%- endmacro -%}
 
 {%- macro http_config_entry(http_config={}) -%}
@@ -84,6 +90,13 @@
   {%- for route_name, route in config_route.get('routes', {}).iteritems() %}
   # {{ route_name }}
   - {{ route_entry(route) | indent(4) }}
+    {%- if route.get('routes', {}) %}
+    routes:
+      {%- for subroute_name, subroute in route.get('routes', {}).iteritems() %}
+    # {{ subroute_name }}
+    - {{ route_entry(subroute) | indent(6) }}
+      {%- endfor %}
+    {%- endif %}
   {%- endfor %}
 {%- endif %}
 
@@ -121,6 +134,16 @@
       {%- endif %}
     {%- endfor %}
   {%- endif %}
+  {%- if config.generic_configs is defined %}
+    {%- for config_name, endpoints in config.generic_configs.iteritems() %}
+    {{ config_name }}:
+      {%- for endpoint_name, endpoint_config in endpoints.iteritems() %}
+    # {{ endpoint_name }}
+    -
+{{ endpoint_config | yaml(False) | indent(6, true) }}
+      {%- endfor %}
+    {%- endfor %}
+  {%- endif %}
   {%- if config.slack_configs is defined %}
     slack_configs:
     {%- for name, slack in config.slack_configs.iteritems() %}
