diff --git a/kubernetes/control/cluster.sls b/kubernetes/control/cluster.sls
index f597c40..4f894ba 100644
--- a/kubernetes/control/cluster.sls
+++ b/kubernetes/control/cluster.sls
@@ -1,153 +1,6 @@
-{% from "kubernetes/map.jinja" import control with context %}
-{%- if control.enabled %}
-
-/srv/kubernetes:
-  file.directory:
-  - makedirs: true
-
-{%- if control.job is defined %}
-
-{%- for job_name, job in control.job.iteritems() %}
-
-/srv/kubernetes/jobs/{{ job_name }}-job.yml:
-  file.managed:
-  - source: salt://kubernetes/files/job.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      job: {{ job|yaml }}
-
-{%- endfor %}
-
-{%- endif %}
-
-{%- for service_name, service in control.service.iteritems() %}
-
-{%- if service.enabled %}
-
-/srv/kubernetes/services/{{ service.cluster }}/{{ service_name }}-svc.yml:
-  file.managed:
-  - source: salt://kubernetes/files/svc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endif %}
-
-/srv/kubernetes/{{ service.kind|lower }}/{{ service_name }}-{{ service.kind }}.yml:
-  file.managed:
-  - source: salt://kubernetes/files/rc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endfor %}
-
-{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
-
-{%- if node_grains.get('kubernetes', {}).service is defined %}
-
-{%- set service = node_grains.get('kubernetes', {}).get('service', {}) %}
-
-{%- if service.enabled %}
-
-/srv/kubernetes/services/{{ node_name }}-svc.yml:
-  file.managed:
-  - source: salt://kubernetes/files/svc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endif %}
-/srv/kubernetes/{{ service.kind|lower }}/{{ node_name }}-{{ service.kind }}.yml:
-  file.managed:
-  - source: salt://kubernetes/files/rc.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      service: {{ service|yaml }}
-
-{%- endif %}
-
-{%- endfor %}
-
-{%- for configmap_name, configmap in control.get('configmap', {}).iteritems() %}
-{%- if configmap.enabled|default(True) %}
-
-{%- if configmap.pillar is defined %}
-{%- if control.config_type == "default" %}
-  {%- for service_name in configmap.pillar.keys() %}
-    {%- if pillar.get(service_name, {}).get('_support', {}).get('config', {}).get('enabled', False) %}
-
-      {%- set support_fragment_file = service_name+'/meta/config.yml' %}
-      {% macro load_support_file(pillar, grains) %}{% include support_fragment_file %}{% endmacro %}
-
-      {%- set service_config_files = load_support_file(configmap.pillar, configmap.get('grains', {}))|load_yaml %}
-      {%- for service_config_name, service_config in service_config_files.config.iteritems() %}
-
-/srv/kubernetes/configmap/{{ configmap_name }}/{{ service_config_name }}:
-  file.managed:
-  - source: {{ service_config.source }}
-  - user: root
-  - group: root
-  - template: {{ service_config.template }}
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      pillar: {{ configmap.pillar|yaml }}
-      grains: {{ configmap.get('grains', {}) }}
-
-      {%- endfor %}
-    {%- endif %}
-  {%- endfor %}
-
-{%- else %}
-
-/srv/kubernetes/configmap/{{ configmap_name }}.yml:
-  file.managed:
-  - source: salt://kubernetes/files/configmap.yml
-  - user: root
-  - group: root
-  - template: jinja
-  - makedirs: true
-  - require:
-    - file: /srv/kubernetes
-  - defaults:
-      configmap_name: {{ configmap_name }}
-      configmap: {{ configmap|yaml }}
-      grains: {{ configmap.get('grains', {}) }}
-
-{%- endif %}
-
-{%- else %}
-{# TODO: configmap not using support between formulas #}
-{%- endif %}
-
-{%- endif %}
-{%- endfor %}
-
-{%- endif %}
+{#-
+  kubernetes.control.cluster is only for backward compatibility and simply
+  includes kubernetes.control and it's child states
+-#}
+include:
+  - kubernetes.control
diff --git a/kubernetes/control/configmap.sls b/kubernetes/control/configmap.sls
new file mode 100644
index 0000000..07b8189
--- /dev/null
+++ b/kubernetes/control/configmap.sls
@@ -0,0 +1,59 @@
+{% from "kubernetes/map.jinja" import control with context %}
+include:
+  - kubernetes.control
+
+{%- for configmap_name, configmap in control.get('configmap', {}).iteritems() %}
+{%- if configmap.enabled|default(True) %}
+
+{%- if configmap.pillar is defined %}
+{%- if control.config_type == "default" %}
+  {%- for service_name in configmap.pillar.keys() %}
+    {%- if pillar.get(service_name, {}).get('_support', {}).get('config', {}).get('enabled', False) %}
+
+      {%- set support_fragment_file = service_name+'/meta/config.yml' %}
+      {% macro load_support_file(pillar, grains) %}{% include support_fragment_file %}{% endmacro %}
+
+      {%- set service_config_files = load_support_file(configmap.pillar, configmap.get('grains', {}))|load_yaml %}
+      {%- for service_config_name, service_config in service_config_files.config.iteritems() %}
+
+/srv/kubernetes/configmap/{{ configmap_name }}/{{ service_config_name }}:
+  file.managed:
+  - source: {{ service_config.source }}
+  - user: root
+  - group: root
+  - template: {{ service_config.template }}
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      pillar: {{ configmap.pillar|yaml }}
+      grains: {{ configmap.get('grains', {}) }}
+
+      {%- endfor %}
+    {%- endif %}
+  {%- endfor %}
+
+{%- else %}
+
+/srv/kubernetes/configmap/{{ configmap_name }}.yml:
+  file.managed:
+  - source: salt://kubernetes/files/configmap.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      configmap_name: {{ configmap_name }}
+      configmap: {{ configmap|yaml }}
+      grains: {{ configmap.get('grains', {}) }}
+
+{%- endif %}
+
+{%- else %}
+{# TODO: configmap not using support between formulas #}
+{%- endif %}
+
+{%- endif %}
+{%- endfor %}
diff --git a/kubernetes/control/init.sls b/kubernetes/control/init.sls
index 35c5745..ea56c42 100644
--- a/kubernetes/control/init.sls
+++ b/kubernetes/control/init.sls
@@ -1,3 +1,16 @@
-
+{% from "kubernetes/map.jinja" import control with context %}
 include:
-- kubernetes.control.cluster
+  - kubernetes.control.cluster
+  {%- if control.job is defined %}
+  - kubernetes.control.job
+  {%- endif %}
+  {%- if control.service is defined %}
+  - kubernetes.control.service
+  {%- endif %}
+  {%- if control.configmap is defined %}
+  - kubernetes.control.configmap
+  {%- endif %}
+
+/srv/kubernetes:
+  file.directory:
+  - makedirs: true
diff --git a/kubernetes/control/job.sls b/kubernetes/control/job.sls
new file mode 100644
index 0000000..b3a0696
--- /dev/null
+++ b/kubernetes/control/job.sls
@@ -0,0 +1,19 @@
+{% from "kubernetes/map.jinja" import control with context %}
+include:
+  - kubernetes.control
+
+{%- for job_name, job in control.job.iteritems() %}
+
+/srv/kubernetes/jobs/{{ job_name }}-job.yml:
+  file.managed:
+  - source: salt://kubernetes/files/job.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      job: {{ job|yaml }}
+
+{%- endfor %}
diff --git a/kubernetes/control/service.sls b/kubernetes/control/service.sls
new file mode 100644
index 0000000..b88dd85
--- /dev/null
+++ b/kubernetes/control/service.sls
@@ -0,0 +1,69 @@
+{% from "kubernetes/map.jinja" import control with context %}
+include:
+  - kubernetes.control
+
+{%- for service_name, service in control.service.iteritems() %}
+  {%- if service.enabled %}
+
+/srv/kubernetes/services/{{ service.cluster }}/{{ service_name }}-svc.yml:
+  file.managed:
+  - source: salt://kubernetes/files/svc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+  {%- endif %}
+
+/srv/kubernetes/{{ service.kind|lower }}/{{ service_name }}-{{ service.kind }}.yml:
+  file.managed:
+  - source: salt://kubernetes/files/rc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+{%- endfor %}
+
+{%- for node_name, node_grains in salt['mine.get']('*', 'grains.items').iteritems() %}
+
+  {%- if node_grains.get('kubernetes', {}).service is defined %}
+    {%- set service = node_grains.get('kubernetes', {}).get('service', {}) %}
+    {%- if service.enabled %}
+
+/srv/kubernetes/services/{{ node_name }}-svc.yml:
+  file.managed:
+  - source: salt://kubernetes/files/svc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+    {%- endif %}
+/srv/kubernetes/{{ service.kind|lower }}/{{ node_name }}-{{ service.kind }}.yml:
+  file.managed:
+  - source: salt://kubernetes/files/rc.yml
+  - user: root
+  - group: root
+  - template: jinja
+  - makedirs: true
+  - require:
+    - file: /srv/kubernetes
+  - defaults:
+      service: {{ service|yaml }}
+
+  {%- endif %}
+
+{%- endfor %}
