diff --git a/_modules/helm.py b/_modules/helm.py
index 23e28c4..f6d7088 100644
--- a/_modules/helm.py
+++ b/_modules/helm.py
@@ -12,18 +12,19 @@
     }
 
 
-def release_exists(name):
-    cmd = _helm_cmd('list', '--short', '--all', name)
+def release_exists(name, namespace):
+    cmd = _helm_cmd('list', '--short', '--all', '--namespace', namespace, name)
     return __salt__['cmd.run_stdout'](**cmd) == name
 
 
-def release_create(name, chart_name, version=None, values=None):
+def release_create(name, namespace, chart_name, version=None, values=None):
     args = []
     if version is not None:
         args += ['--version', version]
     if values is not None:
         args += ['--values', '/dev/stdin']
-    cmd = _helm_cmd('install', '--name', name, chart_name, *args)
+    cmd = _helm_cmd('install', '--namespace', namespace,
+                    '--name', name, chart_name, *args)
     if values is not None:
         cmd['stdin'] = yaml.serialize(values, default_flow_style=False)
     LOG.debug('Creating release with args: %s', cmd)
@@ -35,13 +36,14 @@
     return __salt__['cmd.retcode'](**cmd) == 0
 
 
-def release_upgrade(name, chart_name, version=None, values=None):
+def release_upgrade(name, namespace, chart_name, version=None, values=None):
     args = []
     if version is not None:
         args += ['--version', version]
     if values is not None:
         args += ['--values', '/dev/stdin']
-    cmd = _helm_cmd('upgrade', name, chart_name, *args)
+    cmd = _helm_cmd('upgrade', '--namespace', namespace,
+                    name, chart_name, *args)
     if values is not None:
         cmd['stdin'] = yaml.serialize(values, default_flow_style=False)
     LOG.debug('Upgrading release with args: %s', cmd)
diff --git a/_states/helm_release.py b/_states/helm_release.py
index 1004afb..b3b4fac 100644
--- a/_states/helm_release.py
+++ b/_states/helm_release.py
@@ -13,11 +13,11 @@
     }
 
 
-def present(name, chart_name, version=None, values=None):
-    exists =  __salt__['helm.release_exists'](name)
+def present(name, chart_name, namespace, version=None, values=None):
+    exists =  __salt__['helm.release_exists'](name, namespace)
     if not exists:
         result = __salt__['helm.release_create'](
-            name, chart_name, version, values)
+            name, namespace, chart_name, version, values)
         if not result:
             return failure(name, 'Failed to create release "{}"'.format(name))
         return {
@@ -29,7 +29,7 @@
 
     old_values = __salt__['helm.get_values'](name)
     result = __salt__['helm.release_upgrade'](
-        name, chart_name, version, values)
+        name, namespace, chart_name, version, values)
     if not result:
         return failure(name, 'Failed to create release "{}"'.format(name))
 
@@ -54,8 +54,8 @@
     }
 
 
-def absent(name):
-    exists =  __salt__['helm.release_exists'](name)
+def absent(name, namespace):
+    exists =  __salt__['helm.release_exists'](name, namespace)
     if not exists:
         return {
             'name': name,
diff --git a/helm/client.sls b/helm/client.sls
index 4f83105..0d0678c 100644
--- a/helm/client.sls
+++ b/helm/client.sls
@@ -74,27 +74,40 @@
       - cmd: prepare_client
 {%- endfor %}
 
+{%- set namespaces = [] %}
 {%- for release_id, release in client.releases.items() %}
 {%- set release_name = release.get('name', release_id) %}
+{%- set namespace = release.get('namespace', 'default') %}
 {%- if release.get('enabled', True) %}
 ensure_{{ release_id }}_release:
   helm_release.present:
     - name: {{ release_name }}
     - chart_name: {{ release['chart'] }}
+    - namespace: {{ namespace }}
     {%- if release.get('version') %}
     - version: {{ release['version'] }}
-    {% endif %}
+    {%- endif %}
     {%- if release.get('values') %}
     - values:
         {{ release['values']|yaml(False)|indent(8) }}
-    {% endif %}
+    {%- endif %}
     - require:
       - cmd: wait_for_tiller
+      - cmd: ensure_{{ namespace }}_namespace
+    {%- do namespaces.append(namespace) %}
 {%- else %}{# not release.enabled #}
 absent_{{ release_id }}_release:
   helm_release.absent:
     - name: {{ release_name }}
+    - namespace: {{ namespace }}
 {%- endif %}{# release.enabled #}
 {%- endfor %}{# release_id, release in client.releases #}
 
+{%- for namespace in namespaces %}
+ensure_{{ namespace }}_namespace:
+  cmd.run:
+    - name: kubectl create namespace {{ namespace }}
+    - unless: kubectl get namespace {{ namespace }}
+{%- endfor %}
+
 {%- endif %}
