diff --git a/compose/neutron-agents.yml b/compose/neutron-agents.yml
new file mode 100644
index 0000000000000000000000000000000000000000..895624dffbc95d923da04830faaa8914c590bf40
--- /dev/null
+++ b/compose/neutron-agents.yml
@@ -0,0 +1,11 @@
+neutronagents:
+  image: kollaglue/centos-rdo-neutron-agents:latest
+  name: neutron-agents
+  net: "host"
+  privileged: true
+  restart: always
+  volumes:
+    - /var/run/netns/:/var/run/netns/
+    - /lib/modules:/lib/modules:ro
+  env_file:
+   - openstack.env
diff --git a/compose/neutron-dhcp-agent.yml b/compose/neutron-dhcp-agent.yml
deleted file mode 100644
index 8d944c00cca748b125901e3740d80ebd5d27be56..0000000000000000000000000000000000000000
--- a/compose/neutron-dhcp-agent.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-neutrondhcpagent:
-  image: kollaglue/centos-rdo-neutron-dhcp-agent:latest
-  name: neutron-dhcp-agent
-  net: "host"
-  privileged: true
-  restart: always
-  volumes:
-    - /run/netns/:/run/netns/:ro
-    - /proc/1/ns/:/opt/kolla/host_proc/1/ns/:ro
-    - /lib/modules:/lib/modules:ro
-  env_file:
-   - openstack.env
diff --git a/compose/neutron-l3-agent.yml b/compose/neutron-l3-agent.yml
deleted file mode 100644
index e4c31169f2ab147fa2549490b21525c0e770a0d2..0000000000000000000000000000000000000000
--- a/compose/neutron-l3-agent.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-neutronl3agent:
-  image: kollaglue/centos-rdo-neutron-l3-agent:latest
-  name: neutron-l3-agent
-  net: "host"
-  privileged: true
-  restart: always
-  volumes:
-    - /run/netns/:/run/netns/:ro
-    - /proc/1/ns/:/opt/kolla/host_proc/1/ns/:ro
-    - /lib/modules:/lib/modules:ro
-  env_file:
-   - openstack.env
diff --git a/compose/neutron-linuxbridge-agent.yml b/compose/neutron-linuxbridge-agent.yml
index 46f2e68d5c5e6106523454a041c7b68c54744e4d..e8bf237183b2ec986462e2f2742849cf61d72de1 100644
--- a/compose/neutron-linuxbridge-agent.yml
+++ b/compose/neutron-linuxbridge-agent.yml
@@ -6,7 +6,6 @@ neutronlinuxbridgeagent:
   restart: always
   volumes:
     - /run/netns/:/run/netns/:ro
-    - /proc/1/ns/:/opt/kolla/host_proc/1/ns/:ro
     - /lib/modules:/lib/modules:ro
   env_file:
    - openstack.env
diff --git a/compose/neutron-metadata-agent.yml b/compose/neutron-metadata-agent.yml
deleted file mode 100644
index b9338f7b667821002738994c1f1798762ec86487..0000000000000000000000000000000000000000
--- a/compose/neutron-metadata-agent.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-neutronmetadataagent:
-  image: kollaglue/centos-rdo-neutron-metadata-agent:latest
-  name: neutron-metadata-agent
-  net: "host"
-  privileged: true
-  restart: always
-  volumes:
-    - /run/netns/:/run/netns/:ro
-    - /proc/1/ns/:/opt/kolla/host_proc/1/ns/:ro
-    - /lib/modules:/lib/modules:ro
-  env_file:
-   - openstack.env
diff --git a/docker/centos/binary/neutron/neutron-l3-agent/Dockerfile b/docker/centos/binary/neutron/neutron-agents/Dockerfile
similarity index 58%
rename from docker/centos/binary/neutron/neutron-l3-agent/Dockerfile
rename to docker/centos/binary/neutron/neutron-agents/Dockerfile
index 96a05c9c38752e541457a873efe944266e3eae12..546c2a2104ae0896b953c6600d7e21854d2026b6 100644
--- a/docker/centos/binary/neutron/neutron-l3-agent/Dockerfile
+++ b/docker/centos/binary/neutron/neutron-agents/Dockerfile
@@ -1,6 +1,16 @@
 FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%neutron-base:%%KOLLA_TAG%%
 MAINTAINER Kolla Project (https://launchpad.net/kolla)
 
+# Install supervisor
+RUN easy_install supervisor
+
+# Install supervisor-stdout
+RUN pip install supervisor-stdout
+
+# Configure supervisord
+RUN mkdir -p /var/log/supervisor/
+COPY supervisord.conf /etc/
+
 # TODO: SamYaple FWaaS is part of the l3-agent, not a seperate agent that is
 # why this file is needed. To support FWaaS we cannot have a seperate container
 # I need to figure out the best way to make this work together
@@ -9,6 +19,9 @@ MAINTAINER Kolla Project (https://launchpad.net/kolla)
 # exec line in the start script. Also all these config options can exist in the
 # main neutron.conf if we wish
 COPY fwaas_driver.ini /etc/neutron/
-COPY check.sh start.sh /
 
-CMD ["/start.sh"]
+COPY neutron-dhcp-agent/ /opt/kolla/neutron-dhcp-agent
+COPY neutron-l3-agent/ /opt/kolla/neutron-l3-agent
+COPY neutron-metadata-agent/ /opt/kolla/neutron-metadata-agent
+
+CMD ["/usr/bin/supervisord"]
diff --git a/docker/centos/binary/neutron/neutron-dhcp-agent/build b/docker/centos/binary/neutron/neutron-agents/build
similarity index 100%
rename from docker/centos/binary/neutron/neutron-dhcp-agent/build
rename to docker/centos/binary/neutron/neutron-agents/build
diff --git a/docker/centos/binary/neutron/neutron-l3-agent/fwaas_driver.ini b/docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini
similarity index 100%
rename from docker/centos/binary/neutron/neutron-l3-agent/fwaas_driver.ini
rename to docker/centos/binary/neutron/neutron-agents/fwaas_driver.ini
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-dhcp-agent/check.sh b/docker/centos/binary/neutron/neutron-agents/neutron-dhcp-agent/check.sh
new file mode 120000
index 0000000000000000000000000000000000000000..8658a698011fa0a3d58a2ce2573faf48df9633aa
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-dhcp-agent/check.sh
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-dhcp-agent/check.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-dhcp-agent/start.sh b/docker/centos/binary/neutron/neutron-agents/neutron-dhcp-agent/start.sh
new file mode 120000
index 0000000000000000000000000000000000000000..63dad958d66a3230d6f7472e44229ff44113d33f
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-dhcp-agent/start.sh
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-dhcp-agent/start.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/check.sh b/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/check.sh
new file mode 120000
index 0000000000000000000000000000000000000000..df50ef3901dcc94259e3977cd975c6e1893f6f88
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/check.sh
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-l3-agent/check.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/fwaas_driver.ini b/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/fwaas_driver.ini
new file mode 120000
index 0000000000000000000000000000000000000000..8ea67959c569a4b95560e114acda412abc0fbb24
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/fwaas_driver.ini
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-l3-agent/fwaas_driver.ini
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/start.sh b/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/start.sh
new file mode 120000
index 0000000000000000000000000000000000000000..fa70dec8b1cf613702b85006cc3f940b1663fe2f
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-l3-agent/start.sh
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-l3-agent/start.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-metadata-agent/check.sh b/docker/centos/binary/neutron/neutron-agents/neutron-metadata-agent/check.sh
new file mode 120000
index 0000000000000000000000000000000000000000..ddbee6308390e20716d95ea87ea0c972108a541e
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-metadata-agent/check.sh
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-metadata-agent/check.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/neutron-metadata-agent/start.sh b/docker/centos/binary/neutron/neutron-agents/neutron-metadata-agent/start.sh
new file mode 120000
index 0000000000000000000000000000000000000000..0de2452ee92a3c9ad27779d337b60922747c32df
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/neutron-metadata-agent/start.sh
@@ -0,0 +1 @@
+../../../../../common/neutron/neutron-metadata-agent/start.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-agents/supervisord.conf b/docker/centos/binary/neutron/neutron-agents/supervisord.conf
new file mode 100644
index 0000000000000000000000000000000000000000..2db1af2dc248550f6b1bb45c3942f91dfb4e810a
--- /dev/null
+++ b/docker/centos/binary/neutron/neutron-agents/supervisord.conf
@@ -0,0 +1,46 @@
+[unix_http_server]
+file = /var/run/supervisor.sock
+
+[inet_http_server]
+port = 127.0.0.1:9001
+
+[supervisord]
+nodaemon=true
+logfile = /var/log/supervisor/supervisord.log
+logfile_maxbytes = 200KB
+logfile_backups = 1
+pidfile = /var/run/supervisord.pid
+childlogdir = /var/log/supervisor
+
+[rpcinterface:supervisor]
+supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
+
+[supervisorctl]
+serverurl = unix:///var/run/supervisor.sock
+
+[program:neutron-dhcp-agent]
+command=/opt/kolla/neutron-dhcp-agent/start.sh
+priority=40
+startsec=10
+stderr_events_enabled=true
+stdout_events_enabled=true
+
+[program:neutron-metadata-agent]
+command=/opt/kolla/neutron-metadata-agent/start.sh
+priority=40
+startsec=10
+stderr_events_enabled=true
+stdout_events_enabled=true
+
+[program:neutron-l3-agent]
+command=/opt/kolla/neutron-l3-agent/start.sh
+priority=40
+startsec=10
+stderr_events_enabled=true
+stdout_events_enabled=true
+
+[eventlistener:stdout]
+command = supervisor_stdout
+buffer_size = 100
+events = PROCESS_LOG
+result_handler = supervisor_stdout:event_handler
diff --git a/docker/centos/binary/neutron/neutron-base/Dockerfile b/docker/centos/binary/neutron/neutron-base/Dockerfile
index e316f8a552b407085ef8e70bfeef844e61dd41f7..edc8679f61e61156c9269aaf14fa15c96615c5c8 100644
--- a/docker/centos/binary/neutron/neutron-base/Dockerfile
+++ b/docker/centos/binary/neutron/neutron-base/Dockerfile
@@ -7,12 +7,4 @@ RUN yum -y install openstack-neutron \
                    python-oslo-policy \
     && yum clean all
 
-RUN mkdir -p /opt/kolla/host_proc
-
-RUN pip install nsenter \
-    && ln -s 1 /opt/kolla/host_proc/self
-
 COPY config-neutron.sh config-sudoers.sh /opt/kolla/
-
-RUN mv /sbin/ip /opt/kolla/ip
-COPY ip_wrapper.py /sbin/ip
diff --git a/docker/centos/binary/neutron/neutron-dhcp-agent/Dockerfile b/docker/centos/binary/neutron/neutron-dhcp-agent/Dockerfile
deleted file mode 100644
index bbc9354f3ad2a9803d77261a9209b317c5d14215..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-dhcp-agent/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%neutron-base:%%KOLLA_TAG%%
-MAINTAINER Kolla Project (https://launchpad.net/kolla)
-
-COPY check.sh start.sh /
-
-CMD ["/start.sh"]
diff --git a/docker/centos/binary/neutron/neutron-dhcp-agent/check.sh b/docker/centos/binary/neutron/neutron-dhcp-agent/check.sh
deleted file mode 120000
index c8efc14c6421d0e599d30fe15340f0ebb360b53b..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-dhcp-agent/check.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/neutron/neutron-dhcp-agent/check.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-dhcp-agent/start.sh b/docker/centos/binary/neutron/neutron-dhcp-agent/start.sh
deleted file mode 120000
index 98a2563e9a21bde7c60344f770e68d940ef58d00..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-dhcp-agent/start.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/neutron/neutron-dhcp-agent/start.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-l3-agent/build b/docker/centos/binary/neutron/neutron-l3-agent/build
deleted file mode 120000
index ec19138031a79efca08ea540f84f25ef77ed2f22..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-l3-agent/build
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-l3-agent/check.sh b/docker/centos/binary/neutron/neutron-l3-agent/check.sh
deleted file mode 120000
index 7f8ed45cea0d779f3fb4eaf76b0e5ad42df9d904..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-l3-agent/check.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/neutron/neutron-l3-agent/check.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-l3-agent/start.sh b/docker/centos/binary/neutron/neutron-l3-agent/start.sh
deleted file mode 120000
index 8d9104a332433cfb3c8fba074770601ac4e9d3c7..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-l3-agent/start.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/neutron/neutron-l3-agent/start.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-metadata-agent/Dockerfile b/docker/centos/binary/neutron/neutron-metadata-agent/Dockerfile
deleted file mode 100644
index bbc9354f3ad2a9803d77261a9209b317c5d14215..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-metadata-agent/Dockerfile
+++ /dev/null
@@ -1,6 +0,0 @@
-FROM %%KOLLA_NAMESPACE%%/%%KOLLA_PREFIX%%neutron-base:%%KOLLA_TAG%%
-MAINTAINER Kolla Project (https://launchpad.net/kolla)
-
-COPY check.sh start.sh /
-
-CMD ["/start.sh"]
diff --git a/docker/centos/binary/neutron/neutron-metadata-agent/build b/docker/centos/binary/neutron/neutron-metadata-agent/build
deleted file mode 120000
index ec19138031a79efca08ea540f84f25ef77ed2f22..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-metadata-agent/build
+++ /dev/null
@@ -1 +0,0 @@
-../../../../../tools/build-docker-image
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-metadata-agent/check.sh b/docker/centos/binary/neutron/neutron-metadata-agent/check.sh
deleted file mode 120000
index 2ac733b838694f27b0b5cffcbb90a1701a462e89..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-metadata-agent/check.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/neutron/neutron-metadata-agent/check.sh
\ No newline at end of file
diff --git a/docker/centos/binary/neutron/neutron-metadata-agent/start.sh b/docker/centos/binary/neutron/neutron-metadata-agent/start.sh
deleted file mode 120000
index b555e715d8c37d2a75d4e95cd804fc42aa39edc6..0000000000000000000000000000000000000000
--- a/docker/centos/binary/neutron/neutron-metadata-agent/start.sh
+++ /dev/null
@@ -1 +0,0 @@
-../../../../common/neutron/neutron-metadata-agent/start.sh
\ No newline at end of file
diff --git a/docker/common/neutron/neutron-dhcp-agent/start.sh b/docker/common/neutron/neutron-dhcp-agent/start.sh
index c3056fdb4d587a9970bd4669d3b0c83019dbe2ab..37182ebcacc8898ff707b49cd6ab507403bc7596 100755
--- a/docker/common/neutron/neutron-dhcp-agent/start.sh
+++ b/docker/common/neutron/neutron-dhcp-agent/start.sh
@@ -79,5 +79,16 @@ dhcp-option-force=26,1450
 log-facility=${NEUTRON_LOG_DIR}/neutron-dnsmasq.log
 EOF
 
+# TODO: SamYaple remove this section for thin neutron containers
+# The reason we remove existing namespaces is because network namespaces don't
+# persist between container restarts because the network proc mountpoint dies
+# when the container mount namespace dies. The mountpoint in /run/netns does
+# persist however, and that is all we are cleaning up here.
+
+# Remove any existing qdhcp namespaces
+ip netns list | grep qdhcp | while read -r line ; do
+    ip netns delete $line
+done
+
 # Start DHCP Agent
 exec /usr/bin/neutron-dhcp-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/dhcp_agent.ini --config-dir /etc/neutron
diff --git a/docker/common/neutron/neutron-l3-agent/start.sh b/docker/common/neutron/neutron-l3-agent/start.sh
index 4780341fb8e285dba09447bc2be5e40c9d85186c..c4fb8520505b966c35c5a234ab95fcab5ecb6a06 100755
--- a/docker/common/neutron/neutron-l3-agent/start.sh
+++ b/docker/common/neutron/neutron-l3-agent/start.sh
@@ -76,5 +76,16 @@ elif [ "${USE_NAMESPACES}" == "true" ] ; then
         "true"
 fi
 
+# TODO: SamYaple remove this section for thin neutron containers
+# The reason we remove existing namespaces is because network namespaces don't
+# persist between container restarts because the network proc mountpoint dies
+# when the container mount namespace dies. The mountpoint in /run/netns does
+# persist however, and that is all we are cleaning up here.
+
+# Remove any existing qrouter namespaces
+ip netns list | grep qrouter | while read -r line ; do
+    ip netns delete $line
+done
+
 # Start L3 Agent
 exec /usr/bin/neutron-l3-agent --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/l3_agent.ini --config-file /etc/neutron/fwaas_driver.ini --config-dir /etc/neutron
diff --git a/tools/kolla b/tools/kolla
index 9235c5677d49fd176052d157b2572fff0ca73ac7..62193d9d920d146930b3a0468ddf12afc7c80788 100755
--- a/tools/kolla
+++ b/tools/kolla
@@ -39,10 +39,8 @@ function process_all {
         # Defaulting to neutron
         process nova-compute
         process neutron-server
-        process neutron-dhcp-agent
-        process neutron-l3-agent
-        process neutron-metadata-agent
         process neutron-linuxbridge-agent
+        process neutron-agents
     fi
     process heat-api-engine
     process magnum-api-conductor