diff --git a/slapos/recipe/slapconfiguration.py b/slapos/recipe/slapconfiguration.py
index b70e861aeb5aad18cc7b181314d77a89407e21e4..d2bb437dd866315731f6ddb8182527642c28d584 100644
--- a/slapos/recipe/slapconfiguration.py
+++ b/slapos/recipe/slapconfiguration.py
@@ -89,18 +89,8 @@ class Recipe(object):
       One of the IPv4 addresses.
     ipv6-random
       One of the IPv6 addresses.
-    tap
-      Set of TAP interfaces.
-    tap-network-information-dict
-      Dict of set of all TAP network information
-    tap-ipv4
-      ipv4 allowed for this TAP
-    tap-gateway
-      ipv4 of gateway interface of this TAP
-    tap-netmask
-      ipv4 netmask address of this TAP
-    tap-network
-      ipv4 network address of this TAP
+    global_ipv4_network
+      The global IPv4 network
     configuration
       Dict of all parameters.
     storage-dict
@@ -112,6 +102,8 @@ class Recipe(object):
       anyway, and are available through "configuration" output key.
     instance-state
       The instance state.
+
+    Also note that all information from resource file will be appended
   """
 
   # XXX: used to detect if a configuration key is a valid section key. This
@@ -215,20 +207,6 @@ class Recipe(object):
           options['ipv4-random'] = list(ipv4_set)[0].encode('UTF-8')
       if ipv6_set:
           options['ipv6-random'] = list(ipv6_set)[0].encode('UTF-8')
-      if route_ipv4_set:
-        options['tap-ipv4'] = list(route_ipv4_set)[0].encode('UTF-8')
-        options['tap-network-information-dict'] = dict(ipv4=route_ipv4_set,
-                                    netmask=route_mask_set,
-                                    gateway=route_gw_set,
-                                    network=route_network_set)
-      else:
-        options['tap-network-information-dict'] = {}
-      if route_gw_set:
-        options['tap-gateway'] = list(route_gw_set)[0].encode('UTF-8')
-      if route_mask_set:
-        options['tap-netmask'] = list(route_mask_set)[0].encode('UTF-8')
-      if route_network_set:
-        options['tap-network'] = list(route_network_set)[0].encode('UTF-8')
 
       storage_home = options.get('storage-home')
       storage_dict = {}
@@ -245,8 +223,6 @@ class Recipe(object):
             storage_dict[filename] = storage_link
       options['storage-dict'] = storage_dict
 
-      options['tap'] = tap_set
-
       # The external information transfered from Slap Master has been processed
       # so we extend with information gathered from partition resource file
       if hasattr(slapformat.Partition, "resource_file"):
diff --git a/software/kvm/instance-kvm.cfg.jinja2 b/software/kvm/instance-kvm.cfg.jinja2
index ff0b3c59fb80a9045cd3fd8ee5b70045c3d11163..38a90d11e578f3f61b53ba340a89cda933a42b19 100644
--- a/software/kvm/instance-kvm.cfg.jinja2
+++ b/software/kvm/instance-kvm.cfg.jinja2
@@ -87,7 +87,7 @@ nbd-port = ${slap-parameter:nbd-port}
 nbd2-host = ${slap-parameter:nbd2-host}
 nbd2-port = ${slap-parameter:nbd2-port}
 
-tap-interface = ${slap-network-information:network-interface}
+tap-interface = {{ tap_name }}
 
 disk-size = ${slap-parameter:disk-size}
 disk-type = ${slap-parameter:disk-type}
@@ -132,7 +132,7 @@ external-disk-number = ${slap-parameter:external-disk-number}
 external-disk-size = ${slap-parameter:external-disk-size}
 external-disk-format = ${slap-parameter:external-disk-format}
 
-{% if enable_http == 'true' or ( use_tap == 'true' and tap_network_dict.has_key('ipv4') ) -%}
+{% if enable_http == 'true' or ( use_tap == 'true' and tap_ipv4_addr != "") -%}
 httpd-port = ${slap-parameter:httpd-port}
 {% else -%}
 httpd-port = 0
@@ -438,7 +438,7 @@ nat-rule-url-{{port}} = [${slap-network-information:global-ipv6}]:${6tunnel-{{ex
 {%   endif -%}
 {% endif -%}
 {% if use_tap == 'true' -%}
-tap-ipv4 = ${slap-network-information:tap-ipv4}
+tap-ipv4 = {{tap_ipv4_addr}}
 {% endif -%}
 
 {% set kvm_http = 'http://${slap-network-information:local-ipv4}:' ~ slapparameter_dict.get('httpd-port', 8081) -%}
@@ -451,7 +451,7 @@ tap-ipv4 = ${slap-network-information:tap-ipv4}
 {%   endif %}
 {% endif %}
 
-{% if use_tap == 'true' and tap_network_dict.has_key('ipv4') -%}
+{% if use_tap == 'true' and tap_ipv4_addr != "" -%}
 1_info = Use these configurations below to configure interface {{ iface }} in your VM.
 2_info = ${network-config:ifconfig}
 3_info = ${network-config:route-iface}
@@ -464,15 +464,15 @@ tap-ipv4 = ${slap-network-information:tap-ipv4}
 [network-config]
 recipe = plone.recipe.command
 path = ${directory:public}/netconfig.sh
-ifconfig = ifconfig {{ iface }} ${slap-network-information:tap-ipv4} netmask ${slap-network-information:tap-netmask}
-route-iface = route add ${slap-network-information:tap-gateway} dev {{ iface }}
-route-network = route add -net ${slap-network-information:tap-network} netmask ${slap-network-information:tap-netmask} gw ${slap-network-information:tap-gateway}
+ifconfig = ifconfig {{ iface }} {{tap_ipv4_addr}} netmask {{tap_ipv4_netmask}}
+route-iface = route add {{tap_ipv4_gateway}} dev {{ iface }}
+route-network = route add -net {{tap_ipv4_network}} netmask {{tap_ipv4_netmask}} gw {{tap_ipv4_gateway}}
 {%   if iface == 'eth0' -%}
-route-default = route add default gw ${slap-network-information:tap-gateway}
+route-default = route add default gw {{tap_ipv4_gateway}}
 {%   elif nat_restrict == 'true' -%}
-route-default = route add default gw ${slap-network-information:tap-gateway} dev {{ iface }}
+route-default = route add default gw {{tap_ipv4_gateway}} dev {{ iface }}
 {%   elif global_ipv4_prefix -%}
-route-default = ip route add {{ global_ipv4_prefix }} via ${slap-network-information:tap-gateway} dev {{ iface }} src ${slap-network-information:tap-ipv4}
+route-default = ip route add {{ global_ipv4_prefix }} via {tap_ipv4_gateway}} dev {{ iface }} src {{tap_ipv4_addr}}
 {% else -%}
 route-default =
 {%   endif -%}
@@ -513,11 +513,11 @@ mode = {{ mode }}
 [publish-host-config]
 recipe = plone.recipe.command
 name = {{ slapparameter_dict.get('name', 'localhost') }}
-{% if use_tap == 'true' and tap_network_dict.has_key('ipv4') -%}
-local-ipv4 = ${slap-network-information:tap-ipv4}
-gateway = ${slap-network-information:tap-gateway}
-netmask = ${slap-network-information:tap-network}
-network = ${slap-network-information:tap-netmask}
+{% if use_tap == 'true' and tap_ipv4_addr != "" -%}
+local-ipv4 = {{tap_ipv4_addr}}
+gateway = {{tap_ipv4_gateway}}
+netmask = {{tap_ipv4_network}}
+network = {{tap_ipv4_netmask}}
 {% else -%}
 local-ipv4 = 127.0.0.1
 gateway =
@@ -576,7 +576,7 @@ template = {{ ansible_promise_tpl }}
 rendered = ${directory:promises}/ansible_{{ name }}
 extensions = jinja2.ext.do
 context =
-  key host slap-network-information:tap-ipv4
+  key host {{ tap_ipv4_addr }}
   raw logs ${directory:public}/ansible
   raw name {{ name }}
 
diff --git a/software/kvm/instance.cfg.in b/software/kvm/instance.cfg.in
index 378a1e62f34e56f8a02cb39f7876e1ab311c2a49..ec313bd19fd264be883a4a373b1ef0d5e539db47 100644
--- a/software/kvm/instance.cfg.in
+++ b/software/kvm/instance.cfg.in
@@ -45,17 +45,16 @@ extensions = jinja2.ext.do
 mode = 0644
 extra-context =
 context =
-    key develop_eggs_directory buildout:develop-eggs-directory
-    key eggs_directory buildout:eggs-directory
-    key ipv4 slap-configuration:ipv4
-    key ipv6 slap-configuration:ipv6
-    key global_ipv4_prefix network-information:global-ipv4-network
-    key tap_network_dict slap-configuration:tap-network-information-dict
-    key storage_dict slap-configuration:storage-dict
-    key slapparameter_dict slap-configuration:configuration
-    key computer_id slap-configuration:computer
-    raw openssl_executable_location ${openssl:location}/bin/openssl
-    $${:extra-context}
+  key develop_eggs_directory buildout:develop-eggs-directory
+  key eggs_directory buildout:eggs-directory
+  key ipv4 slap-configuration:ipv4
+  key ipv6 slap-configuration:ipv6
+  key global_ipv4_prefix network-information:global-ipv4-network
+  key storage_dict slap-configuration:storage-dict
+  key slapparameter_dict slap-configuration:configuration
+  key computer_id slap-configuration:computer
+  raw openssl_executable_location ${openssl:location}/bin/openssl
+  $${:extra-context}
 
 [dynamic-template-kvm-cluster-parameters]
 
@@ -71,45 +70,45 @@ extra-context =
   raw template_monitor ${monitor2-template:rendered}
 
 [dynamic-template-kvm]
-recipe = slapos.recipe.template:jinja2
+<= jinja2-template-base
 template = ${template-kvm:location}/instance-kvm.cfg.jinja2
-rendered = $${buildout:directory}/template-kvm.cfg
-extensions = jinja2.ext.do
-context =
-    key develop_eggs_directory buildout:develop-eggs-directory
-    key eggs_directory buildout:eggs-directory
-    key global_ipv4_prefix network-information:global-ipv4-network
-    key slapparameter_dict slap-configuration:configuration
-    key storage_dict slap-configuration:storage-dict
-    key tap_network_dict slap-configuration:tap-network-information-dict
-    raw ansible_promise_tpl ${template-ansible-promise:location}/${template-ansible-promise:filename}
-    raw curl_executable_location ${curl:location}/bin/curl
-    raw dash_executable_location ${dash:location}/bin/dash
-    raw dcron_executable_location ${dcron:location}/sbin/crond
-    raw debian_amd64_netinst_location ${debian-amd64-netinst.iso:location}/${debian-amd64-netinst.iso:filename}
-    raw file_download_script ${file-download-script:location}/${file-download-script:filename}
-    raw logrotate_cfg ${template-logrotate-base:rendered}
-    raw novnc_location ${noVNC:location}
-    raw netcat_bin ${netcat:location}/bin/netcat
-    raw openssl_executable_location ${openssl:location}/bin/openssl
-    raw python_executable ${buildout:executable}
-    raw python_eggs_executable ${buildout:bin-directory}/${eggs:interpreter}
-    raw qemu_executable_location ${kvm:location}/bin/qemu-system-x86_64
-    raw qemu_img_executable_location ${kvm:location}/bin/qemu-img
-    raw qemu_start_promise_tpl ${template-qemu-ready:location}/${template-qemu-ready:filename}
-    raw sixtunnel_executable_location ${6tunnel:location}/bin/6tunnel
-    raw template_httpd_cfg ${template-httpd:rendered}
-    raw template_content ${template-content:location}/${template-content:filename}
-    raw template_kvm_controller_run ${template-kvm-controller:location}/${template-kvm-controller:filename}
-    raw template_kvm_run ${template-kvm-run:location}/${template-kvm-run:filename}
-    raw template_monitor ${monitor2-template:rendered}
-    raw websockify_executable_location ${buildout:directory}/bin/websockify
-    raw wipe_disk_wrapper ${buildout:directory}/bin/securedelete
+filename = template-kvm.cfg
+extra-context =
+  key tap_ipv4_addr slap-configuration:tap-ipv4-addr
+  key tap_ipv4_gateway slap-configuration:tap-ipv4-gateway
+  key tap_ipv4_netmask slap-configuration:tap-ipv4-netmask
+  key tap_ipv4_network slap-configuration:tap-ipv4-network
+  key tap_ipv6_addr slap-configuration:tap-ipv6-addr
+  key tap_ipv6_gateway slap-configuration:tap-ipv6-gateway
+  key tap_ipv6_netmask slap-configuration:tap-ipv6-netmask
+  key tap_ipv6_network slap-configuration:tap-ipv6-network
+  key tap_name slap-configuration:tap-name
+  raw ansible_promise_tpl ${template-ansible-promise:location}/${template-ansible-promise:filename}
+  raw curl_executable_location ${curl:location}/bin/curl
+  raw dash_executable_location ${dash:location}/bin/dash
+  raw dcron_executable_location ${dcron:location}/sbin/crond
+  raw debian_amd64_netinst_location ${debian-amd64-netinst.iso:location}/${debian-amd64-netinst.iso:filename}
+  raw file_download_script ${file-download-script:location}/${file-download-script:filename}
+  raw logrotate_cfg ${template-logrotate-base:rendered}
+  raw novnc_location ${noVNC:location}
+  raw netcat_bin ${netcat:location}/bin/netcat
+  raw python_executable ${buildout:executable}
+  raw python_eggs_executable ${buildout:bin-directory}/${eggs:interpreter}
+  raw qemu_executable_location ${kvm:location}/bin/qemu-system-x86_64
+  raw qemu_img_executable_location ${kvm:location}/bin/qemu-img
+  raw qemu_start_promise_tpl ${template-qemu-ready:location}/${template-qemu-ready:filename}
+  raw sixtunnel_executable_location ${6tunnel:location}/bin/6tunnel
+  raw template_httpd_cfg ${template-httpd:rendered}
+  raw template_content ${template-content:location}/${template-content:filename}
+  raw template_kvm_controller_run ${template-kvm-controller:location}/${template-kvm-controller:filename}
+  raw template_kvm_run ${template-kvm-run:location}/${template-kvm-run:filename}
+  raw template_monitor ${monitor2-template:rendered}
+  raw websockify_executable_location ${buildout:directory}/bin/websockify
+  raw wipe_disk_wrapper ${buildout:directory}/bin/securedelete
 template-parts-destination = ${template-parts:target}
 template-replicated-destination = ${template-replicated:target}
 import-list = file parts :template-parts-destination
               file replicated :template-replicated-destination
-mode = 0644
 
 [dynamic-template-kvm-resilient]
 recipe = slapos.recipe.template:jinja2
diff --git a/software/kvm/software.cfg b/software/kvm/software.cfg
index b51e2e89467cf112c5c6b4d66e8e6522cbf6aaed..0a82e09f52def9c0dda5c427753928fd393974bb 100644
--- a/software/kvm/software.cfg
+++ b/software/kvm/software.cfg
@@ -90,7 +90,7 @@ command =
 [template]
 recipe = slapos.recipe.template
 url = ${:_profile_base_location_}/instance.cfg.in
-md5sum = 5a17fc127190bbc19361c5ffb10711b3
+md5sum = 2e3fba2f0f6483e62f19a8d2616554bc
 output = ${buildout:directory}/template.cfg
 mode = 0644
 
@@ -99,7 +99,7 @@ recipe = hexagonit.recipe.download
 ignore-existing = true
 url = ${:_profile_base_location_}/instance-kvm.cfg.jinja2
 mode = 644
-md5sum = 0668791e78430bafdec5300b4ea8d90a
+md5sum = 602cdd2ed6d26d494f2dce697e8168d9
 download-only = true
 on-update = true