diff --git a/roles/gpu/tasks/main.yml b/roles/gpu/tasks/main.yml
index c13e7db22a699453bf41d0bc45a6663bf51787ae..f4b2d0585e8a750ebc4e9b1473dfea3f985a97fb 100644
--- a/roles/gpu/tasks/main.yml
+++ b/roles/gpu/tasks/main.yml
@@ -78,17 +78,17 @@
 
 - name: set uninstall default
   set_fact: 
-    install_driver: false
+    uninstall_driver: false
 
 - name: set install
   set_fact: 
     install_driver: true
-  when: not nvidia_driver.stat.exists or not installed_driver_version == nvidia_version
+  when: not nvidia_driver.stat.exists or not installed_driver_version.stdout == nvidia_version
 
 - name: set uninstall
   set_fact: 
     uninstall_driver: true
-  when: nvidia_driver.stat.exists and not installed_driver_version == nvidia_version
+  when: nvidia_driver.stat.exists and not installed_driver_version.stdout == nvidia_version
 
 - name: stop the persistence daemon
   service: name=nvidia-persistenced state=stopped
@@ -96,6 +96,12 @@
   become_user: root
   when: uninstall_driver
 
+- name: kill any X processes
+  shell:  ps ax | grep "X :0" | grep -v grep | cut -f 1 -d " " | xargs -I{} kill -9 {}
+  become: true
+  become_user: root
+  when: uninstall_driver
+
 - name: get nvidia driver 
   get_url: url=http://consistency0/src/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run dest=/tmp/NVIDIA-Linux-x86_64-{{ nvidia_version }}.run
   become: true
diff --git a/roles/ldapclient/tasks/configLdapClient.yml b/roles/ldapclient/tasks/configLdapClient.yml
index 3a85550ea67a81696eb526e575665524c29da6f3..cdf3fa9b31e41f85e8549bfb08583477eb9f5cb6 100644
--- a/roles/ldapclient/tasks/configLdapClient.yml
+++ b/roles/ldapclient/tasks/configLdapClient.yml
@@ -25,12 +25,12 @@
   when: ldapCaCertContents is defined
 
 - name: "Copy system auth"
-  template: src=system-auth.j2 dest=/etc/pam.d/system-auth
+  template: src=system-auth.j2 dest=/etc/pam.d/system-auth-ac
   become: true
   become_user: root
 
 - name: "Copy password auth"
-  template: src=password-auth.j2 dest=/etc/pam.d/password-auth
+  template: src=password-auth.j2 dest=/etc/pam.d/password-auth-ac
   become: true
   become_user: root
 
diff --git a/roles/move_homedir/tasks/main.yml b/roles/move_homedir/tasks/main.yml
index e0f4863464e6aff0ea2b3c6a6898d1e0b3da4336..61d6b03a2b82e920011c3c03a773509d3b77bfce 100644
--- a/roles/move_homedir/tasks/main.yml
+++ b/roles/move_homedir/tasks/main.yml
@@ -2,11 +2,16 @@
   file: path=/local_home owner=root group=root state=directory
   sudo: true 
 
+- name: stat the local_home path
+  stat: path=/local_home/{{ ansible_user }}
+  register: local_home_path
+
 - name: copy the {{ ansible_user }} home
   shell: cp -ar /home/{{ ansible_user }} /local_home
   ignore_errors: true
   sudo: true
   register: home_copied
+  when: not local_home_path.stat.exists
 
 
 - name: edit passwd file
diff --git a/roles/slurm-start/tasks/main.yml b/roles/slurm-start/tasks/main.yml
index 0aac90c6779918e51f95649dde4d2789c43cec92..2b2d82beea7afd96bdcbd2328bfd11c67c20f58e 100644
--- a/roles/slurm-start/tasks/main.yml
+++ b/roles/slurm-start/tasks/main.yml
@@ -19,6 +19,7 @@
   template: dest=/etc/systemd/system/slurmdbd.service src=slurmdbd.service.j2 mode=644
   sudo: true
   when: use_systemd is defined and start_slurmdbd is defined
+  register: slurmdbd_service_installed
 
 - name: copy slurm init script
   template: dest=/etc/init.d/slurm src=slurm.initd.j2  mode=755
@@ -29,16 +30,28 @@
   template: dest=/etc/systemd/system/slurmd.service src=slurmd.service.j2 mode=644
   sudo: true
   when: use_systemd is defined and start_slurmd is defined
+  register: slurmd_service_installed
 
 - name: slurmctld.service
   template: dest=/etc/systemd/system/slurmctld.service src=slurmctld.service.j2 mode=644
   sudo: true
   when: use_systemd is defined and start_slurmctld is defined
+  register: slurmctld_service_installed
 
 - name: reload systemd
   shell: systemctl daemon-reload
   sudo: true
-  when: use_systemd is defined
+  when: use_systemd is defined and start_slurmd is defined and slurmd_service_installed | changed
+
+- name: reload systemd
+  shell: systemctl daemon-reload
+  sudo: true
+  when: use_systemd is defined and start_slurmctld is defined and slurmctld_service_installed | changed
+
+- name: reload systemd
+  shell: systemctl daemon-reload
+  sudo: true
+  when: use_systemd is defined and start_slurmdbd is defined and slurmdbd_service_installed | changed
 
 - name: start munge
   service: name=munge state=started enabled=yes