diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 973aba1ba8a3d3e3977011216bf7ce583bc16788..8d01b8acab7b321cd013b90e3d42605a4e1dc8af 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -3,86 +3,34 @@ before_script:
 
 
 after_script:
-  - "echo Test Complete, eliding cleanup"
-  - "rm -rf /tmp/ped_ls /tmp/ls.rida /tmp/ped_cat"
+  - "echo Test Complete."
 
 
 
-do_build:
+do-build:
   stage: build
   tags:
-    - zipr
+    - ubuntu18
   script:
-    - "# gather info for debugging later, probably not necessary "
-    - "pwd"
-    - "hostname"
-    - "whoami"
-    - "env|grep CICD"
-    - ""
-    - "# puts peasoup_umbrella (and all submodules) in CICD_MODULE_WORK_DIR"
-    - "cicd_setup_module_dependency allnp/peasoup_umbrella.git"
-    - ""
-    - "# puts the version of zipr to test in peasoup_umbrella/zipr."
-    - "cicd_put_module_in_tree peasoup_umbrella/zipr"
-    - ""
-    - "# Build/run $PSZ, test result"
-    - "cd $CICD_MODULE_WORK_DIR/peasoup_umbrella"
-    - "source set_env_vars"
-    - "sudo ./get-peasoup-packages.sh all"
-    - "./build-all.sh"
-    - "dropdb $PGDATABASE 2>/dev/null || true ; ./postgres_setup.sh"
+    - ./cicd_tests/do-build.sh
 
 xform-ls:
   stage: test
   tags:
-    - zipr
+    - ubuntu18
   script:
-    - "cd $CICD_MODULE_WORK_DIR/peasoup_umbrella"
-    - "source set_env_vars"
-    - "cd /tmp"
-    - "rm -rf ls.rida ped_ls; $PSZ /bin/ls ./ls.rida -c rida=on -s meds_static=off --tempdir ped_ls || true"
-    - "if [[ ! -x ./ls.rida ]]; then cat ped_ls/logs/*; fi"
-    - "rm -rf ped_ls"
-    - "./ls.rida"
-    - ""
+    - ./cicd_tests/xform-ls.sh
 
 xform-cat:
   stage: test
   tags:
-    - zipr
+    - ubuntu18
   script:
-    - "cd $CICD_MODULE_WORK_DIR/peasoup_umbrella"
-    - "source set_env_vars"
-    - "cd /tmp"
-    - "rm -rf cat.rida ped_cat; $PSZ /bin/ls ./cat.rida -c rida=on -s meds_static=off --tempdir ped_cat || true"
-    - "if [[ ! -x ./cat.rida ]]; then cat ped_ls/logs/*; fi"
-    - "./cat.rida /dev/null "
-    - ""
+    - ./cicd_tests/xform-cat.sh
 
 internal-tests:
   stage: test
   tags:
     - zipr
   script:
-    - "cd $CICD_MODULE_WORK_DIR/peasoup_umbrella"
-    - "source set_env_vars"
-    - "# run zipr internal tests"
-    - "cd $ZIPR_HOME/test; scons"
-    - "for i in *.exe; do ./$i; done"
-
-
-# updating ps-analyze is now done nightly.
-#update-ps:
-#   stage: deploy
-#   only: 
-#      refs:
-#        - master
-#   when: on_success
-#   tags:
-#      - zipr
-#   script:
-#      - "cd $CICD_MODULE_WORK_DIR/peasoup_umbrella"
-#      - "git add zipr" 
-#      - "git commit -m \"submod automatic update from zipr update-ps job on $(date)\" "
-#      - "git push"
-     
+    - ./cicd_tests/internal-tests.sh
diff --git a/cicd_tests/do-build.sh b/cicd_tests/do-build.sh
new file mode 100644
index 0000000000000000000000000000000000000000..834ed0aba2314b532f10a22620b6a0e63e8c84ca
--- /dev/null
+++ b/cicd_tests/do-build.sh
@@ -0,0 +1,24 @@
+#/bin/bash 
+
+set -e
+
+# gather info for debugging later, probably not necessary 
+pwd
+hostname
+whoami
+env|grep CICD
+
+# puts peasoup_umbrella (and all submodules) in CICD_MODULE_WORK_DIR
+cicd_setup_module_dependency allnp/peasoup_umbrella.git
+
+
+# puts the version of zipr to test in peasoup_umbrella/zipr.
+cicd_put_module_in_tree peasoup_umbrella/zipr
+
+# Build/run $PSZ, test result
+cd $CICD_MODULE_WORK_DIR/peasoup_umbrella
+source set_env_vars
+sudo ./get-peasoup-packages.sh all
+./build-all.sh
+dropdb $PGDATABASE 2>/dev/null || true ; ./postgres_setup.sh
+
diff --git a/cicd_tests/internal-tests.sh b/cicd_tests/internal-tests.sh
new file mode 100644
index 0000000000000000000000000000000000000000..8a8f4f544f91ca902c2d61e640221ce3d9d86e84
--- /dev/null
+++ b/cicd_tests/internal-tests.sh
@@ -0,0 +1,11 @@
+#!/bin/bash 
+
+set -e
+
+cd $CICD_MODULE_WORK_DIR/peasoup_umbrella
+source set_env_vars
+# run zipr internal tests
+cd $ZIPR_HOME/test; scons
+for i in *.exe; do ./$i; done
+
+
diff --git a/cicd_tests/xform-cat.sh b/cicd_tests/xform-cat.sh
new file mode 100644
index 0000000000000000000000000000000000000000..12d95562edecf8f235fe2209521bdc9467bd563d
--- /dev/null
+++ b/cicd_tests/xform-cat.sh
@@ -0,0 +1,8 @@
+cd $CICD_MODULE_WORK_DIR/peasoup_umbrella
+
+set -e
+source set_env_vars
+cd /tmp
+rm -rf cat.rida ped_cat; $PSZ $(which cat) ./cat.rida -c rida=on -s meds_static=off --tempdir ped_cat || true
+if [[ ! -x ./cat.rida ]]; then cat ped_ls/logs/*; fi
+./cat.rida /dev/null 
diff --git a/cicd_tests/xform-ls.sh b/cicd_tests/xform-ls.sh
new file mode 100644
index 0000000000000000000000000000000000000000..9b52f61c0aa48d0ecb41421390b6c9fb9546200c
--- /dev/null
+++ b/cicd_tests/xform-ls.sh
@@ -0,0 +1,10 @@
+#!/bin/bash
+set -e
+
+cd $CICD_MODULE_WORK_DIR/peasoup_umbrella
+source set_env_vars
+cd /tmp
+rm -rf ls.rida ped_ls; $PSZ /bin/ls ./ls.rida -c rida=on -s meds_static=off --tempdir ped_ls || true
+if [[ ! -x ./ls.rida ]]; then cat ped_ls/logs/*; fi
+rm -rf ped_ls
+./ls.rida