diff --git a/ansible/playbooks/install_hevdisplay_opengl.yml b/ansible/playbooks/install_hevdisplay_opengl.yml
index 3ee35279f93523f342c90b57de97671031de4516..a76d747a4f255e887e556e3b096f0923cfd9dac0 100644
--- a/ansible/playbooks/install_hevdisplay_opengl.yml
+++ b/ansible/playbooks/install_hevdisplay_opengl.yml
@@ -15,19 +15,17 @@
               update_cache: yes
           become: yes
 
-
         - name: install software via apt
           apt: 
-              name: "{{ item }}"
+              name: "{{ rpi_swlist }}"  
               state: present
-          with_items: "{{ rpi_swlist }}"  
           become: yes
 
+
         - name: pip install packages
           pip:
               executable: /usr/bin/pip3
-              name: "{{ item }}"
-          with_items: "{{ pip_list }}"  
+              name: "{{ pip_list }}"  
 
         - name: mk dev dir
           file:
diff --git a/ansible/playbooks/install_software.yml b/ansible/playbooks/install_software.yml
index fb092559a9160ac501dc06992d11fb21e26974f2..9f6ed00b0497d40f69d1830121ba60951ac61d2b 100644
--- a/ansible/playbooks/install_software.yml
+++ b/ansible/playbooks/install_software.yml
@@ -16,9 +16,8 @@
 
         - name: install software via apt
           apt: 
-              name: "{{ item }}"
+              name: "{{ rpi_swlist }}"  
               state: present
-          with_items: "{{ rpi_swlist }}"  
           become: yes
         
         - name: mk sw dir
@@ -58,8 +57,7 @@
         - name: pip install packages
           pip:
               executable: /usr/bin/pip3
-              name: "{{ item }}"
-          with_items: "{{ pip_list }}"  
+              name: "{{ pip_list }}"  
 
         - name: install hev-display via apt
           apt: 
diff --git a/ansible/playbooks/lists.yml b/ansible/playbooks/lists.yml
index a2f7dc5660062ca768bd81564a608ceb7a36f64d..4b5c8bc75ae3dfdb655d2b5496b6c3bec92995b2 100644
--- a/ansible/playbooks/lists.yml
+++ b/ansible/playbooks/lists.yml
@@ -11,5 +11,6 @@ rpi_swlist:
 
 pip_list: 
   - libscrc
+  - pyserial_asyncio
 
   
diff --git a/ansible/playbooks/refresh_software.yml b/ansible/playbooks/refresh_software.yml
index 99df320ff8dba185864db397c8bc83b2f428b3d7..cf6d5e6e6b121268da7434872f6606901385a9a5 100644
--- a/ansible/playbooks/refresh_software.yml
+++ b/ansible/playbooks/refresh_software.yml
@@ -10,19 +10,33 @@
 
         - name: install software via apt
           apt: 
-              name: "{{ item }}"
+              name: "{{ rpi_swlist }}"  
               state: present
-          with_items: "{{ rpi_swlist }}"  
           become: yes
+
+        - name: pip install packages
+          pip:
+              executable: /usr/bin/pip3
+              name: "{{ pip_list }}"  
         
+        - name: archive old hev-sw
+          archive:
+              path: "{{ ansible_env.HOME }}/hev-sw"
+              dest: "{{ ansible_env.HOME }}/hev-sw.{{ '%Y%m%d%H%M%S' | strftime }}.tgz"
+
         - name: remove old hev-sw
           file:
-              path: "{{ ansible_env.HOME }}/hev-sw"
+              path: "{{ ansible_env.HOME }}/hev-sw/"
               state: absent
 
+        - name: archive old hev-display
+          archive:
+              path: "{{ ansible_env.HOME }}/hev-display"
+              dest: "{{ ansible_env.HOME }}/hev-display.{{ '%Y%m%d%H%M%S' | strftime }}.tgz"
+
         - name: remove old hev-display
           file:
-              path: "{{ ansible_env.HOME }}/hev-display"
+              path: "{{ ansible_env.HOME }}/hev-display/"
               state: absent
 
         - name: clone git repo - hev-sw