diff --git a/neutron/client/init.sls b/neutron/client/init.sls
new file mode 100644
index 0000000..81a2000
--- /dev/null
+++ b/neutron/client/init.sls
@@ -0,0 +1,2 @@
+include:
+- neutron.client.resources
diff --git a/neutron/client.sls b/neutron/client/resources/init.sls
similarity index 97%
rename from neutron/client.sls
rename to neutron/client/resources/init.sls
index b4bb7ac..5ec7f0d 100644
--- a/neutron/client.sls
+++ b/neutron/client/resources/init.sls
@@ -1,12 +1,15 @@
 {%- from "neutron/map.jinja" import client with context %}
 {%- if client.enabled %}
 
+include:
+- neutron.client.resources.v2
+
 neutron_client_packages:
   pkg.installed:
   - names: {{ client.pkgs }}
 
 
-{%- for identity_name, identity in client.server.iteritems() %}
+{%- for identity_name, identity in client.get('server', {}).iteritems() %}
 
 {%- if identity.security_group is defined %}
 
diff --git a/neutron/client/resources/v2.sls b/neutron/client/resources/v2.sls
new file mode 100644
index 0000000..3de104d
--- /dev/null
+++ b/neutron/client/resources/v2.sls
@@ -0,0 +1,110 @@
+{%- from "neutron/map.jinja" import client with context %}
+{%- if client.enabled %}
+
+{%- for identity_name, identity in client.get('resources', {}).get('v2', {}).iteritems() %}
+
+  {%- if identity.network is defined %}
+  {%- for network_name, network in identity.network.iteritems() %}
+
+neutron_openstack_network_{{ network_name }}:
+  neutronv2.network_present:
+    - cloud_name: {{ identity_name }}
+    - name: {{ network_name }}
+    {%- if network.provider_network_type is defined %}
+    - provider:network_type: {{ network.provider_network_type }}
+    {%- endif %}
+    {%- if network.provider_physical_network is defined %}
+    - provider:physical_network: {{ network.provider_physical_network }}
+    {%- endif %}
+    {%- if network.provider_segmentation_id is defined %}
+    - provider:segmentation_id: {{ network.provider_segmentation_id }}
+    {%- endif %}
+    {%- if network.router_external is defined %}
+    - router:external: {{ network.router_external }}
+    {%- endif %}
+    {%- if network.admin_state_up is defined %}
+    - admin_state_up: {{ network.admin_state_up }}
+    {%- endif %}
+    {%- if network.shared is defined %}
+    - shared: {{ network.shared }}
+    {%- endif %}
+    {%- if network.dns_domain is defined %}
+    - dns_domain: {{ network.dns_domain }}
+    {%- endif %}
+    {%- if network.is_default is defined %}
+    - is_default: {{ network.is_default }}
+    {%- endif %}
+
+    {%- if network.subnet is defined %}
+    {%- for subnet_name, subnet in network.subnet.iteritems() %}
+
+neutron_openstack_subnet_{{ subnet_name }}:
+  neutronv2.subnet_present:
+    - cloud_name: {{ identity_name }}
+    - name: {{ subnet_name }}
+    - network_id: {{ network_name }}
+
+    {%- if subnet.cidr is defined %}
+    - cidr: {{ subnet.cidr  }}
+    {%- endif %}
+    {%- if subnet.ip_version is defined %}
+    - ip_version: {{ subnet.ip_version }}
+    {%- endif %}
+    {%- if subnet.enable_dhcp is defined %}
+    - enable_dhcp: {{ subnet.enable_dhcp }}
+    {%- endif %}
+    {%- if subnet.allocation_pools is defined %}
+    - allocation_pools: {{ subnet.allocation_pools }}
+    {%- endif %}
+    {%- if subnet.gateway_ip is defined %}
+    - gateway_ip: {{ subnet.gateway_ip }}
+    {%- endif %}
+    {%- if subnet.dns_nameservers is defined %}
+    - dns_nameservers: {{ subnet.dns_nameservers }}
+    {%- endif %}
+    {%- if subnet.host_routes is defined %}
+    - host_routes: {{ subnet.host_routes }}
+    {%- endif %}
+    - require:
+      - neutronv2: neutron_openstack_network_{{ network_name }}
+
+    {%- endfor %}
+    {%- endif %}
+
+  {%- endfor %}
+  {%- endif %}
+
+  {%- if identity.subnetpool is defined %}
+  {%- for pool_name, pool in identity.subnetpool.iteritems() %}
+
+neutron_openstack_subnetpool_{{ pool_name }}:
+  neutronv2.subnetpool_present:
+    - cloud_name: {{ identity_name }}
+    - name: {{ pool_name }}
+    {%- if pool.default_quota is defined %}
+    - default_quota: {{ pool.default_quota }}
+    {%- endif %}
+    {%- if pool.min_prefixlen is defined %}
+    - min_prefixlen: {{ pool.min_prefixlen }}
+    {%- endif %}
+    {%- if pool.address_scope_id is defined %}
+    - address_scope_id: {{ pool.address_scope_id }}
+    {%- endif %}
+    {%- if pool.default_prefixlen is defined %}
+    - default_prefixlen: {{ pool.default_prefixlen }}
+    {%- endif %}
+    {%- if pool.is_default is defined %}
+    - is_default: {{ pool.is_default }}
+    {%- endif %}
+    {%- if pool.prefixes is defined %}
+    - prefixes:
+      {%- for prefix in pool.prefixes %}
+      - {{ prefix }}
+      {%- endfor %}
+    {%- endif %}
+
+  {%- endfor %}
+  {%- endif %}
+
+{%- endfor %}
+{%- endif %}
\ No newline at end of file
