diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 78c41d9c098dbb875a74e66eb283a67f3db3a483..1bd696742c9ebfbbfcb9784e6575b29e8bdf4414 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,31 +1,108 @@
 before_script:
   - "source ~gitlab-runner/cicd_support/cicd_support.shinc" 
-  - "git submodule sync --recursive"
-  - "git submodule update --recursive --init"
 
 after_script:
   - "source ~gitlab-runner/cicd_support/cicd_support.shinc" 
-  - "cicd_cleanup"
 
-xform-ls:
+stages:
+  - clean
+  - build
+  - test
+
+
+#
+# Cleaning
+#
+.do-nightly-clean: &do-nightly-clean
+  stage: clean
+  script:
+    - ./cicd_testing/do-clean.sh 
+
+do-nightly-clean-ubuntu18:
+  <<: *do-nightly-clean
+  tags:
+    - ubuntu18
+
+do-nightly-clean-ubuntu16:
+  <<: *do-nightly-clean
+  tags:
+    - ubuntu16
+
+#
+# Building
+#
+
+.do-build: &do-build
+  stage: build
+  script:
+    - ./cicd_testing/do-build.sh 
+
+do-build-ubuntu18:
+  <<: *do-build
   tags:
-    - psz
-    - integration
+    - ubuntu18
+
+do-build-ubuntu16:
+  <<: *do-build
+  tags:
+    - ubuntu16
+
+#
+# $PSZ ls
+#
+
+.xform-ls: &xform-ls
+  stage: test
   script:
-    - "# gather info for debugging later, probably not necessary "
-    - "pwd"
-    - "hostname"
-    - "whoami"
-    - "env|grep CICD"
-    - ""
-    - "cd $CICD_TO_TEST_DIR"
-    - "source set_env_vars"
-    - "sudo ./get-peasoup-packages.sh all"
-    - "./build-all.sh --debug"
-    - "./postgres_setup.sh"
-    - "cd /tmp"
-    - "rm -rf ped_ls; $PSZ /bin/ls ./xxx -c rida=on -s meds_static=off --tempdir ped_ls || true"
-    - "if [[ ! -x ./xxx ]]; then cat ped_ls/logs/*; fi"
-    - "rm -rf ped_ls"
-    - "./xxx"
+    - ./cicd_testing/xform-ls.sh
+
+
+xform-ls-ubuntu18:
+  <<: *xform-ls
+  tags:
+    - ubuntu18
+
+xform-ls-ubuntu16:
+  <<: *xform-ls
+  tags:
+    - ubuntu16
+
+
+
+#
+# test_cmds.sh rida
+#
+.basic-pgms-rida: &basic-pgms-rida
+  stage: test
+  script:
+    - ./cicd_testing/basic-pgms-rida.sh
+
+basic-pgms-rida-ubuntu18:
+  <<: *basic-pgms-rida
+  tags:
+    - ubuntu18
+
+basic-pgms-rida-ubuntu16:
+  <<: *basic-pgms-rida
+  tags:
+    - ubuntu16
+
+#
+# test_cmds.sh rida-p1
+#
+.basic-pgms-rida-p1: &basic-pgms-rida-p1
+  stage: test
+  script:
+    - ./cicd_testing/basic-pgms-rida-p1.sh
+
+basic-pgms-rida-p1-ubuntu18:
+  <<: *basic-pgms-rida-p1
+  tags:
+    - ubuntu18
+
+basic-pgms-rida-p1-ubuntu16:
+  <<: *basic-pgms-rida-p1
+  tags:
+    - ubuntu16
+
 
diff --git a/SMPStaticAnalyzer b/SMPStaticAnalyzer
index 26d753078ed67a95a294557f0ecc8cc474985eca..2aa2a42b1b002fa36484b3e921b1849c0a53ff90 160000
--- a/SMPStaticAnalyzer
+++ b/SMPStaticAnalyzer
@@ -1 +1 @@
-Subproject commit 26d753078ed67a95a294557f0ecc8cc474985eca
+Subproject commit 2aa2a42b1b002fa36484b3e921b1849c0a53ff90
diff --git a/build-all.sh b/build-all.sh
index 1f50eee9495340d27040b4823feefd0493250460..ffa2e82545b29ac728618c41901b027483ccd6c9 100755
--- a/build-all.sh
+++ b/build-all.sh
@@ -39,7 +39,7 @@ use_strata=0
 if [[ $use_strata = 1 ]]; then
 	# stratafier
 	cd $PEASOUP_UMBRELLA_DIR/stratafier
-	make || exit
+	make || exit 1
 
 	# strata
 	if [ ! "$STRATA_HOME" ]; then 
@@ -60,20 +60,20 @@ if [[ $use_strata = 1 ]]; then
 		fi
 		
 		cd $STRATA_HOME32
-		STRATA_HOME=$STRATA_HOME32 STRATA=$STRATA_HOME32 ./build -host=i386-linux || exit
+		STRATA_HOME=$STRATA_HOME32 STRATA=$STRATA_HOME32 ./build -host=i386-linux || exit 1
 
 		# build x86-64 strata
 		cd $STRATA_HOME
 		if [ -f Makefile -a Makefile -nt configure -a Makefile -nt Makefile.in ]; then
 			echo Skipping Strata reconfigure step
 		else
-			./configure $cfar_mode || exit
+			./configure $cfar_mode || exit 1
 		fi
-		make || exit
+		make || exit 1
 
 	else
 		cd $STRATA_HOME
-		./build $cfar_mode || exit
+		./build $cfar_mode || exit 1
 	fi
 fi
 
@@ -90,56 +90,56 @@ if [ ! "$SECURITY_TRANSFORMS_HOME" ]; then
 fi
 
 cd $SECURITY_TRANSFORMS_HOME
-scons $SCONSDEBUG -j 3 || exit
+scons $SCONSDEBUG -j 3 || exit 1
 
 cd $SMPSA_HOME
-scons $SCONSDEBUG -j 3 || exit
+scons $SCONSDEBUG -j 3 || exit 1
 
 cd $PEASOUP_HOME
-make || exit
+make || exit 1
 
 if [ -d $ZIPR_CALLBACKS ]; then 
 	cd $ZIPR_CALLBACKS
 	./configure --enable-p1 --prefix=$ZIPR_INSTALL
-	make  || exit
-	make install || exit
+	make  || exit 1
+	make install || exit 1
 fi
 
 if [ -d $ZIPR_HOME ]; then
 	cd $ZIPR_HOME
-	scons $SCONSDEBUG -j 3|| exit
+	scons $SCONSDEBUG -j 3|| exit 1
 fi
 
 if [ -d $ZIPR_SCFI_PLUGIN ]; then
 	cd $ZIPR_SCFI_PLUGIN
-	scons  $SCONSDEBUG || exit
+	scons  $SCONSDEBUG || exit 1
 fi
 
 cd $PEASOUP_UMBRELLA_DIR/zipr_large_only_plugin/
-scons $SCONSDEBUG || exit
+scons $SCONSDEBUG || exit 1
 
 if [[ -e $PEASOUP_UMBRELLA_DIR/zipr ]] && [[ -e $PEASOUP_UMBRELLA_DIR/zipr_relax_plugin ]]  ; then
 	cd $PEASOUP_UMBRELLA_DIR/zipr_relax_plugin/
-	scons $SCONSDEBUG || exit
+	scons $SCONSDEBUG || exit 1
 fi
 
 if [[ -e $PEASOUP_UMBRELLA_DIR/zipr ]] && [[ -e $PEASOUP_UMBRELLA_DIR/zipr_trace_plugin ]]  ; then
 	cd $PEASOUP_UMBRELLA_DIR/zipr_trace_plugin/
-	scons $SCONSDEBUG || exit
+	scons $SCONSDEBUG || exit 1
 fi
 
 cd $PEASOUP_UMBRELLA_DIR/zipr_push64_reloc_plugin
-scons $SCONSDEBUG || exit
+scons $SCONSDEBUG || exit 1
 
 cd $PEASOUP_UMBRELLA_DIR/zipr_unpin_plugin
-scons $SCONSDEBUG || exit
+scons $SCONSDEBUG || exit 1
 
 cd $IRDB_TRANSFORMS
-scons $SCONSDEBUG -j 3 || exit
+scons $SCONSDEBUG -j 3 || exit 1
 
 if [[ -d $DAFFY_HOME ]] && [[ $(uname -p) == 'x86_64' ]]; then
 	cd $DAFFY_HOME
-	./setup_cfar.sh
+	./setup_cfar.sh || exit 1
 fi
 
 cd $PEASOUP_UMBRELLA_DIR
diff --git a/cicd_testing/basic-pgms-rida-p1.sh b/cicd_testing/basic-pgms-rida-p1.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9581d204be43941220f505d73ff97bd9a3e23f29
--- /dev/null
+++ b/cicd_testing/basic-pgms-rida-p1.sh
@@ -0,0 +1,9 @@
+#/bin/bash 
+set -e
+set -x
+
+cd /tmp/peasoup_test
+source set_env_vars
+cd $CICD_TO_TEST_DIR/peasoup_examples/tests
+cd $PEASOUP_HOME/tests; make clean; ./test_cmds.sh rida_p1
+
diff --git a/cicd_testing/basic-pgms-rida.sh b/cicd_testing/basic-pgms-rida.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9af4df9c2a3dec5651aba4f7f7e6f66201df2dc4
--- /dev/null
+++ b/cicd_testing/basic-pgms-rida.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+set -e
+set -x
+
+cd /tmp/peasoup_test
+source set_env_vars
+cd $CICD_TO_TEST_DIR/peasoup_examples/tests
+cd $PEASOUP_HOME/tests; make clean; ./test_cmds.sh rida
+
diff --git a/cicd_testing/do-build.sh b/cicd_testing/do-build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fa5bf13a3c5484d5632e98e9dc1ce3dea715252c
--- /dev/null
+++ b/cicd_testing/do-build.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+set -e
+set -x
+
+
+# update submodules
+git submodule sync --recursive
+git submodule update --recursive --init
+# gather info for debugging later, probably not necessary 
+pwd
+hostname
+whoami
+env|grep CICD
+
+time rsync -a --exclude='.git'  $CICD_TO_TEST_DIR/ /tmp/peasoup_test
+cd /tmp/peasoup_test
+source set_env_vars
+sudo ./get-peasoup-packages.sh all
+./build-all.sh 
+./postgres_setup.sh
+
diff --git a/cicd_testing/do-clean.sh b/cicd_testing/do-clean.sh
new file mode 100755
index 0000000000000000000000000000000000000000..9f9d4fd5016d189f24e361dc46f6f8a632cce1b0
--- /dev/null
+++ b/cicd_testing/do-clean.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+set -e
+set -x
+
+main()
+{
+
+        if [[ $CICD_NIGHTLY == 1 ]] ; then
+		# gather info for debugging later, probably not necessary 
+		pwd
+		hostname
+		whoami
+		env|grep CICD
+
+		rm -rf /tmp/peasoup_test
+	fi
+}
+
+main "$@"
+
diff --git a/cicd_testing/xform-ls.sh b/cicd_testing/xform-ls.sh
new file mode 100755
index 0000000000000000000000000000000000000000..086ee0160722686534debd2832f6ae4f47ea77a0
--- /dev/null
+++ b/cicd_testing/xform-ls.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+set -x
+
+cd /tmp/peasoup_test
+source set_env_vars
+cd /tmp
+rm -rf xxx ped_ls; $PSZ /bin/ls ./xxx -c rida=on -s meds_static=off --tempdir ped_ls || true
+if [[ ! -x ./xxx ]]; then cat ped_ls/logs/*; fi
+rm -rf ped_ls
+./xxx
+
diff --git a/peasoup_examples b/peasoup_examples
index 3de8b74db1a493144f5c771693c15fb4871b8d06..cdaa88dd81a8a9c91bbe13b767d149c9bfd07cf1 160000
--- a/peasoup_examples
+++ b/peasoup_examples
@@ -1 +1 @@
-Subproject commit 3de8b74db1a493144f5c771693c15fb4871b8d06
+Subproject commit cdaa88dd81a8a9c91bbe13b767d149c9bfd07cf1
diff --git a/security_transforms b/security_transforms
index ac9f9dc7af8938c6f1f41f849221956cfd5237e7..5dbce69e8e12ffe5f965514b0f15f04dfa8fef2f 160000
--- a/security_transforms
+++ b/security_transforms
@@ -1 +1 @@
-Subproject commit ac9f9dc7af8938c6f1f41f849221956cfd5237e7
+Subproject commit 5dbce69e8e12ffe5f965514b0f15f04dfa8fef2f
diff --git a/zipr b/zipr
index f1b6a510d9ff2dad49d5003da9cf0fc85e97ada0..7fe51a50552503862d70845e789b5461c3f61b19 160000
--- a/zipr
+++ b/zipr
@@ -1 +1 @@
-Subproject commit f1b6a510d9ff2dad49d5003da9cf0fc85e97ada0
+Subproject commit 7fe51a50552503862d70845e789b5461c3f61b19