diff --git a/docker/compose-ng.sls b/docker/compose-ng.sls
deleted file mode 100644
index d68bea9..0000000
--- a/docker/compose-ng.sls
+++ /dev/null
@@ -1,83 +0,0 @@
-{%- from "docker/map.jinja" import compose with context %}
-{%- for name, container in compose.container.items() %}
-  {%- set id = name %}
-  {%- set required_containers = [] %}
-
-{{id}}_image:
-  docker.pulled:
-  {%- set image = container.image.split(':',1) %}
-    - name: {{image[0]}}
-    - tag: {{image[1]}}
-
-
-{{id}} container:
-  {%- if 'dvc' in container and container.dvc %}
-  docker.installed:
-  {%- else %}
-  docker.running:
-  {%- endif %}
-    - name: {{id}}
-    - image: {{container.image}}
-  {%- if 'command' in container %}
-    - command: {{container.command}}
-  {%- endif %}
-  {%- if 'environment' in container and container.environment is iterable %}
-    - environment:
-    {%- for variable, value in container.environment.iteritems() %}
-        - {{variable}}: {{value}}
-    {%- endfor %}
-  {%- endif %}
-  {%- if 'ports' in container and container.ports is iterable %}
-    - ports:
-    {%- for port_mapping in container.ports %}
-      {%- if port_mapping is string %}
-        {%- set mapping = port_mapping.split(':',2) %}
-        {%- if mapping|length < 2 %}
-      - "{{mapping[0]}}"
-        {%- else %}
-      - "{{mapping[-1]}}/tcp":
-            HostPort: "{{mapping[-2]}}"
-            HostIp: "{{mapping[-3]|d('')}}"
-        {%- endif %}
-      {%- elif port_mapping is mapping %}
-      - {{port_mapping}}
-      {%- endif %}
-    {%- endfor %}
-  {%- endif %}
-  {%- if 'volumes' in container %}
-    - volumes:
-    {%- for volume in container.volumes %}
-      - {{volume}}
-    {%- endfor %}
-  {%- endif %}
-  {%- if 'volumes_from' in container %}
-    - volumes_from:
-    {%- for volume in container.volumes_from %}
-      {%- do required_containers.append(volume) %}
-      - {{volume}}
-    {%- endfor %}
-  {%- endif %}
-  {%- if 'links' in container %}
-    - links:
-    {%- for link in container.links %}
-      {%- set name, alias = link.split(':',1) %}
-      {%- do required_containers.append(name) %}
-        {{name}}: {{alias}}
-    {%- endfor %}
-  {%- endif %}
-  {%- if 'restart' in container %}
-    - restart_policy:
-    {%- set policy = container.restart.split(':',1) %}
-        Name: {{policy[0]}}
-    {%- if policy|length > 1 %}
-        MaximumRetryCount: {{policy[1]}}
-    {%- endif %}
-  {%- endif %}
-    - require:
-      - docker: {{id}}_image
-  {%- if required_containers is defined %}
-    {%- for containerid in required_containers %}
-      - docker: {{containerid}}
-    {%- endfor %}
-  {%- endif %}
-{% endfor %}
diff --git a/docker/compose.sls b/docker/compose.sls
index a35e25a..47d536c 100644
--- a/docker/compose.sls
+++ b/docker/compose.sls
@@ -1,17 +1,68 @@
-{% from "docker/map.jinja" import compose with context %}
+{%- from "docker/map.jinja" import compose with context %}
 
-include:
-- .compose-ng
-
-compose-pip:
+docker_python:
   pkg.installed:
-    - name: python-pip
-  pip.installed:
-    - name: pip
-    - upgrade: True
+    - name: python-docker
 
-compose:
-  pip.installed:
-    - name: docker-compose{# == {{ compose.version }}#}
+{%- for name, container in compose.container.items() %}
+  {%- set id = name %}
+  {%- set required_containers = [] %}
+
+{{id}}_image:
+  dockerng.image_present:
+    - name: {{ container.image }}
     - require:
-      - pip: compose-pip
+      - pkg: docker_python
+
+{{id}}_container:
+  dockerng.running:
+    - name: {{id}}
+    - user: {{ container.user|default("root") }}
+    - image: {{container.image}}
+  {%- if 'command' in container %}
+    - command: {{container.command}}
+  {%- endif %}
+  {%- if 'environment' in container and container.environment is iterable %}
+    - environment:
+    {%- for variable, value in container.environment.iteritems() %}
+        - {{variable}}: {{value}}
+    {%- endfor %}
+  {%- endif %}
+  {%- if 'ports' in container and container.ports is iterable %}
+    - port_bindings:
+    {% for port in container.ports %}
+      - {{ port }}
+    {% endfor %}
+  {%- endif %}
+  {%- if 'volumes' in container %}
+    - volumes:
+    {%- for volume in container.volumes %}
+      - {{volume}}
+    {%- endfor %}
+  {%- endif %}
+  {%- if 'volumes_from' in container %}
+    - volumes_from:
+    {%- for volume in container.volumes_from %}
+      {%- do required_containers.append(volume) %}
+      - {{volume}}
+    {%- endfor %}
+  {%- endif %}
+  {%- if 'links' in container %}
+    - links:
+    {%- for link in container.links %}
+      {%- set name, alias = link.split(':',1) %}
+      {%- do required_containers.append(name) %}
+        {{name}}: {{alias}}
+    {%- endfor %}
+  {%- endif %}
+  {%- if 'restart' in container %}
+    - restart_policy: {{ container.restart }}
+  {%- endif %}
+    - require:
+      - dockerng: {{id}}_image
+  {%- if required_containers is defined %}
+    {%- for containerid in required_containers %}
+      - dockerng: {{containerid}}
+    {%- endfor %}
+  {%- endif %}
+{% endfor %}
