diff --git a/roles/docker/tasks/main.yml b/roles/docker/tasks/main.yml
index 08c5f0e2534452d35c176e55c8b61b0947ed9714..3d8e29f732934cec4f41361fab92c0d00cc8543c 100644
--- a/roles/docker/tasks/main.yml
+++ b/roles/docker/tasks/main.yml
@@ -47,6 +47,8 @@
   with_items: docker_package_info.pkgs
   when: docker_package_info.pkgs|length > 0
 
+- meta: flush_handlers
+
 - name: ensure docker service is started and enabled
   service:
     name: "{{ item }}"
diff --git a/roles/etcd/handlers/main.yml b/roles/etcd/handlers/main.yml
index cda7514293cfcd8f6aef2217abb318a82a44dcda..22661c08784b4979acc3c5b227aa9a124ea085ba 100644
--- a/roles/etcd/handlers/main.yml
+++ b/roles/etcd/handlers/main.yml
@@ -1,14 +1,15 @@
 ---
-- name: restart systemd-etcd
+- name: restart etcd
   command: /bin/true
   notify:
     - reload systemd
-    - restart etcd
+    - reload etcd
 
 - name: reload systemd
   command: systemctl daemon-reload
+  when: init_system == "systemd"
 
-- name: restart etcd
+- name: reload etcd
   service:
     name: etcd
     state: restarted
diff --git a/roles/etcd/tasks/configure.yml b/roles/etcd/tasks/configure.yml
index 4b802d919f665f0aadd13a830ecf1eaf340954a7..34a80ed4766fa02e2e11b515f65e36dab63d8edf 100644
--- a/roles/etcd/tasks/configure.yml
+++ b/roles/etcd/tasks/configure.yml
@@ -7,7 +7,7 @@
   when: init_system == "systemd"
   notify: restart systemd-etcd
 
-- name: Configure |  Write calico-node initd script
+- name: Configure |  Write etcd  initd script
   template:
     src: deb-etcd.initd.j2
     dest: /etc/init.d/etcd
@@ -21,9 +21,3 @@
     src: etcd.j2
     dest: /etc/etcd.env
   notify: restart etcd
-
-- name: Configure |  Ensure etcd is running
-  service:
-    name: etcd
-    state: started
-    enabled: yes
diff --git a/roles/etcd/tasks/main.yml b/roles/etcd/tasks/main.yml
index c5e8b8cb257873d27e4cb1a8011c6c6e63cfd892..b91c9a2520c422a308e0482ad99551d97dcd68f5 100644
--- a/roles/etcd/tasks/main.yml
+++ b/roles/etcd/tasks/main.yml
@@ -6,3 +6,13 @@
   command: /bin/true
   notify: restart etcd
   when: etcd_copy.stdout_lines
+
+# reload systemd before starting service
+- meta: flush_handlers
+
+
+- name: Ensure etcd is running
+  service:
+    name: etcd
+    state: started
+    enabled: yes
diff --git a/roles/etcd/templates/etcd.service.j2 b/roles/etcd/templates/etcd.service.j2
index 876dcaa69299dc402870111c3cd871a1dea1a053..19cc0386e2a09c2e3e229a2d179d2df9aec74a58 100644
--- a/roles/etcd/templates/etcd.service.j2
+++ b/roles/etcd/templates/etcd.service.j2
@@ -1,6 +1,6 @@
 [Unit]
 Description=etcd
-Conflicts=etcd.service
+
 
 [Service]
 User=etcd
diff --git a/roles/kubernetes/master/handlers/main.yml b/roles/kubernetes/master/handlers/main.yml
index 048c3801fa26ed231812d0491a3928f5379cc02f..e5d5f7739721d6d8bea0317af7208b797a184f0a 100644
--- a/roles/kubernetes/master/handlers/main.yml
+++ b/roles/kubernetes/master/handlers/main.yml
@@ -1,25 +1,16 @@
 ---
-- name: restart systemd-kubelet
-  command: /bin/true
-  notify:
-    - reload systemd
-    - restart kubelet
 
-- name: restart systemd-kube-apiserver
+- name: restart kube-apiserver
   command: /bin/true
   notify:
     - reload systemd
-    - restart kube-apiserver
+    - reload kube-apiserver
 
 - name: reload systemd
   command: systemctl daemon-reload
+  when: init_system == "systemd"
 
-- name: restart kubelet
-  service:
-    name: kubelet
-    state: restarted
-
-- name: restart kube-apiserver
+- name: reload kube-apiserver
   service:
     name: kube-apiserver
     state: restarted
diff --git a/roles/kubernetes/master/tasks/main.yml b/roles/kubernetes/master/tasks/main.yml
index aec37836f3fe3c686a60c87c17a0d616f81fda89..48cfd5bc0c6756a3c3e23320d5c7abbe0f5c40ee 100644
--- a/roles/kubernetes/master/tasks/main.yml
+++ b/roles/kubernetes/master/tasks/main.yml
@@ -47,7 +47,7 @@
     dest: "/etc/systemd/system/kube-apiserver.service"
     backup: yes
   when: init_system == "systemd"
-  notify: restart systemd-kube-apiserver
+  notify: restart kube-apiserver
 
 - name: install | Write kube-apiserver initd script
   template:
@@ -80,6 +80,9 @@
   notify: restart kube-apiserver
   changed_when: is_gentoken_calico|default(false)
 
+# reload-systemd
+- meta: flush_handlers
+
 - name: Enable apiserver
   service:
     name: kube-apiserver
diff --git a/roles/kubernetes/node/handlers/main.yml b/roles/kubernetes/node/handlers/main.yml
index e0b39d5997df519c16f2df1abf53a5d2213ba2d7..81d7ca2c7baf5e49f789d264f8a8423d57f79d3a 100644
--- a/roles/kubernetes/node/handlers/main.yml
+++ b/roles/kubernetes/node/handlers/main.yml
@@ -1,18 +1,19 @@
 ---
 - name: reload systemd
   command: systemctl daemon-reload
+  when: init_system == "systemd"
 
-- name: restart systemd-kubelet
+- name: restart kubelet
   command: /bin/true
   notify:
     - reload systemd
-    - restart kubelet
+    - reload kubelet
 
 - name: set is_gentoken_calico fact
   set_fact:
     is_gentoken_calico: true
 
-- name: restart kubelet
+- name: reload kubelet
   service:
     name: kubelet
     state: restarted
diff --git a/roles/kubernetes/node/tasks/main.yml b/roles/kubernetes/node/tasks/main.yml
index 6ec2f0857a96d342315bee880a04eb7b668dfc02..18d293615770932dd8a36c7a4804a73266e61aae 100644
--- a/roles/kubernetes/node/tasks/main.yml
+++ b/roles/kubernetes/node/tasks/main.yml
@@ -41,7 +41,7 @@
     - restart kubelet
 
 - name: Write proxy manifest
-  template: 
+  template:
     src: manifests/kube-proxy.manifest.j2
     dest: "{{ kube_manifest_dir }}/kube-proxy.manifest"
 
@@ -50,6 +50,9 @@
   notify: restart kubelet
   when: kubelet_copy.stdout_lines
 
+# reload-systemd
+- meta: flush_handlers
+
 - name: Enable kubelet
   service:
     name: kubelet
diff --git a/roles/network_plugin/tasks/calico.yml b/roles/network_plugin/tasks/calico.yml
index c8eb3628260e03f96d342b4dc46d1fd4a05d634b..9bd3f0829a68eb133ec1e0422484c0a03b299d65 100644
--- a/roles/network_plugin/tasks/calico.yml
+++ b/roles/network_plugin/tasks/calico.yml
@@ -13,7 +13,8 @@
     dest: /usr/bin/calicoctl
     state: link
 
-- wait_for:
+- name: Calico | wait for etcd
+  wait_for:
     port: 2379
   when: inventory_hostname in groups['kube-master']
 
@@ -68,6 +69,8 @@
   when: init_system == "sysvinit" and ansible_os_family == "RedHat"
   notify: restart calico-node
 
+- meta: flush_handlers
+
 - name: Calico | Enable calico-node
   service: name=calico-node enabled=yes state=started
 
diff --git a/roles/network_plugin/templates/calico/calico-node.service.j2 b/roles/network_plugin/templates/calico/calico-node.service.j2
index af07e2571659c97f43fa274a0effb32d57321028..5ee52305e4d3ae3214126344e35159de14d017ca 100644
--- a/roles/network_plugin/templates/calico/calico-node.service.j2
+++ b/roles/network_plugin/templates/calico/calico-node.service.j2
@@ -2,7 +2,7 @@
 Description=Calico per-node agent
 Documentation=https://github.com/projectcalico/calico-docker
 Requires=docker.service
-After=docker.service etcd2.service
+After=docker.service etcd.service
 
 [Service]
 User=root