diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a26015a8a5fbe6919de6d351dc43c7b41d161e86..5fd569528fa71d387b5a66c0cfac36aacd1c7b91 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -152,7 +152,7 @@ level2:rpm:gstlal-burst:
 
 # Docker Images
 
-docker:el7:
+.docker:rpm: &docker-rpm
   interruptible: true
   stage: docker
   before_script: [ ]
@@ -170,18 +170,63 @@ docker:el7:
     - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
     - docker build --pull -t $DOCKER_BRANCH --file .gitlab-ci.Dockerfile.e7 .
     - docker push $DOCKER_BRANCH
+  only:
+    - schedules
+    - pushes
+
+docker:el7:
+  <<: *docker-rpm
   needs:
     - level0:rpm:gstlal
     - level1:rpm:gstlal-ugly
     - level2:rpm:gstlal-calibration
     - level2:rpm:gstlal-inspiral
     - level2:rpm:gstlal-burst
-  only:
-    - schedules
-    - pushes
   except:
     - /gstlal-([a-z]+-|)[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
 
+docker:release:gstlal:el7:
+  <<: *docker-rpm
+  needs:
+    - level0:rpm:gstlal
+  only:
+    - /gstlal-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
+
+docker:release:gstlal-ugly:el7:
+  <<: *docker-rpm
+  needs:
+    - level0:rpm:gstlal
+    - level1:rpm:gstlal-ugly
+  only:
+    - /gstlal-ugly-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
+
+docker:release:gstlal-inspiral:el7:
+  <<: *docker-rpm
+  needs:
+    - level0:rpm:gstlal
+    - level1:rpm:gstlal-ugly
+    - level2:rpm:gstlal-inspiral
+  only:
+    - /gstlal-inspiral-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
+
+docker:release:gstlal-burst:el7:
+  <<: *docker-rpm
+  needs:
+    - level0:rpm:gstlal
+    - level1:rpm:gstlal-ugly
+    - level2:rpm:gstlal-burst
+  only:
+    - /gstlal-burst-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
+
+docker:release:gstlal-calibration:el7:
+  <<: *docker-rpm
+  needs:
+    - level0:rpm:gstlal
+    - level1:rpm:gstlal-ugly
+    - level2:rpm:gstlal-calibration
+  only:
+    - /gstlal-calibration-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
+
 .docker:conda: &docker-conda
   interruptible: true
   stage: docker
@@ -223,81 +268,6 @@ docker:conda:prod:
   needs:
     - dependencies/conda-prod
 
-docker:release:gstlal-inspiral:el7:
-  interruptible: true
-  stage: docker
-  before_script: [ ]
-  script:
-    # add RPMs to directory to pass to docker
-    - mkdir rpms
-
-    # Copy rpms to new container.
-    - mv rpmbuild/RPMS/x86_64/*.rpm rpms
-
-    # Clear out the old rpmbuild directory
-    - rm -rf rpmbuild*
-
-    # Build the container:
-    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
-    - docker build --pull -t $DOCKER_BRANCH --file .gitlab-ci.Dockerfile.e7 .
-    - docker push $DOCKER_BRANCH
-  needs:
-    - level0:rpm:gstlal
-    - level1:rpm:gstlal-ugly
-    - level2:rpm:gstlal-inspiral
-  only:
-    - /gstlal-inspiral-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
-
-docker:release:gstlal-burst:el7:
-  interruptible: true
-  stage: docker
-  before_script: [ ]
-  script:
-    # add RPMs to directory to pass to docker
-    - mkdir rpms
-
-    # Copy rpms to new container.
-    - mv rpmbuild/RPMS/x86_64/*.rpm rpms
-
-    # Clear out the old rpmbuild directory
-    - rm -rf rpmbuild*
-
-    # Build the container:
-    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
-    - docker build --pull -t $DOCKER_BRANCH --file .gitlab-ci.Dockerfile.e7 .
-    - docker push $DOCKER_BRANCH
-  needs:
-    - level0:rpm:gstlal
-    - level1:rpm:gstlal-ugly
-    - level2:rpm:gstlal-burst
-  only:
-    - /gstlal-burst-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
-
-docker:release:gstlal-calibration:el7:
-  interruptible: true
-  stage: docker
-  before_script: [ ]
-  script:
-    # add RPMs to directory to pass to docker
-    - mkdir rpms
-
-    # Copy rpms to new container.
-    - mv rpmbuild/RPMS/x86_64/*.rpm rpms
-
-    # Clear out the old rpmbuild directory
-    - rm -rf rpmbuild*
-
-    # Build the container:
-    - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
-    - docker build --pull -t $DOCKER_BRANCH --file .gitlab-ci.Dockerfile.e7 .
-    - docker push $DOCKER_BRANCH
-  needs:
-    - level0:rpm:gstlal
-    - level1:rpm:gstlal-ugly
-    - level2:rpm:gstlal-calibration
-  only:
-    - /gstlal-calibration-[0-9]+\.[0-9]+\.[0-9]+-v[0-9]+/
-
 latest_image:
   interruptible: true
   stage: docker-latest
@@ -413,6 +383,7 @@ test:gstlal-burst:el7:
     - level0:rpm:gstlal
     - level1:rpm:gstlal-ugly
     - level2:rpm:gstlal-burst
+    - level2:rpm:gstlal-inspiral
   script:
     # Install RPMs and set up the test environment:
     - if [ -d rpmbuild ]; then yum -y install rpmbuild/RPMS/x86_64/*.rpm; fi
diff --git a/gstlal-inspiral/tests/Makefile.offline_tutorial_test b/gstlal-inspiral/tests/Makefile.offline_tutorial_test
index 145698e563c6573798c3cf95866963b54be9104e..dd28475c9d86efa8102c5a9719b0b2b9f2f60d0b 100644
--- a/gstlal-inspiral/tests/Makefile.offline_tutorial_test
+++ b/gstlal-inspiral/tests/Makefile.offline_tutorial_test
@@ -415,74 +415,54 @@ H1L1-ALL_MASS_MODEL-$(START)-$(DURATION).h5: gstlal_bank.xml.gz measured_psd.xml
 		--model ligo
 	@echo ""
 
-H1-0000_GSTLAL_SPLIT_BANK-0-0.xml.gz: gstlal_bank.xml.gz
-	# gstlal_bank_splitter_0001
-	$(TIME) gstlal_bank_splitter \
+H1L1-0000_GSTLAL_SPLIT_BANK_0000-0-0.xml.gz: gstlal_bank.xml.gz
+	# gstlal_inspiral_bank_splitter_0001
+	$(TIME) gstlal_inspiral_bank_splitter \
 		--f-low $(LOW_FREQUENCY_CUTOFF) \
 		--group-by-chi $(NUM_CHI_BINS) \
 		--approximant $(APPROXIMANT) \
-		--output-cache H1_split_bank.cache \
 		--overlap $(OVERLAP) \
-		--instrument H1 \
-		--n $(NUM_SPLIT_TEMPLATES) \
-		--sort-by mchirp \
-		--max-f-final $(HIGH_FREQUENCY_CUTOFF) \
-		--num-banks $(NUMBANKS) \
-		$<
-	@echo ""
-
-L1-0000_GSTLAL_SPLIT_BANK-0-0.xml.gz: gstlal_bank.xml.gz
-	# gstlal_bank_splitter_0002
-	$(TIME) gstlal_bank_splitter \
-		--f-low $(LOW_FREQUENCY_CUTOFF) \
-		--group-by-chi $(NUM_CHI_BINS) \
-		--approximant $(APPROXIMANT) \
-		--output-cache L1_split_bank.cache \
-		--overlap $(OVERLAP) \
-		--instrument L1 \
+		--instrument H1L1 \
 		--n $(NUM_SPLIT_TEMPLATES) \
 		--sort-by mchirp \
-		--max-f-final $(HIGH_FREQUENCY_CUTOFF) \
+		--f-final $(HIGH_FREQUENCY_CUTOFF) \
 		--num-banks $(NUMBANKS) \
+		--stats-file svd_manifest.yml \
 		$<
 	@echo ""
 
-H1-0000_SVD-$(START)-$(DURATION).xml.gz: H1-0000_GSTLAL_SPLIT_BANK-0-0.xml.gz measured_psd.xml.gz
-	# gstlal_svd_bank_0001
-	$(TIME) gstlal_svd_bank \
+H1-0000_SVD-$(START)-$(DURATION).xml.gz: H1L1-0000_GSTLAL_SPLIT_BANK_0000-0-0.xml.gz measured_psd.xml.gz
+	# gstlal_inspiral_svd_bank_0001
+	$(TIME) gstlal_inspiral_svd_bank \
 		--reference-psd measured_psd.xml.gz \
 		--samples-min $(SAMPLES_MIN) \
-		--bank-id 0_0 \
 		--write-svd $@ \
 		--ortho-gate-fap 0.5 \
-		--template-bank $< \
 		--flow $(LOW_FREQUENCY_CUTOFF) \
+		--instrument-override H1 \
 		--svd-tolerance 0.9999 \
-		--samples-max-64 2048 \
-		--clipleft 25 \
 		--autocorrelation-length 351 \
+		--samples-max-64 2048 \
 		--samples-max-256 $(SAMPLES_MAX_256) \
-		--clipright 25 \
-		--samples-max $(SAMPLE_RATE)
+		--samples-max $(SAMPLE_RATE) \
+		$<
 	@echo ""
 
-L1-0000_SVD-$(START)-$(DURATION).xml.gz: L1-0000_GSTLAL_SPLIT_BANK-0-0.xml.gz measured_psd.xml.gz
-	# gstlal_svd_bank_0002
-	$(TIME) gstlal_svd_bank \
+L1-0000_SVD-$(START)-$(DURATION).xml.gz: H1L1-0000_GSTLAL_SPLIT_BANK_0000-0-0.xml.gz measured_psd.xml.gz
+	# gstlal_inspiral_svd_bank_0002
+	$(TIME) gstlal_inspiral_svd_bank \
 		--reference-psd measured_psd.xml.gz \
 		--samples-min $(SAMPLES_MIN) \
-		--bank-id 0_0 \
 		--write-svd $@ \
 		--ortho-gate-fap 0.5 \
-		--template-bank $< \
 		--flow $(LOW_FREQUENCY_CUTOFF) \
+		--instrument-override L1 \
 		--svd-tolerance 0.9999 \
-		--samples-max-64 2048 \
-		--clipleft 25 \
 		--autocorrelation-length 351 \
+		--samples-max-64 2048 \
 		--samples-max-256 $(SAMPLES_MAX_256) \
-		--clipright 25 \
-		--samples-max $(SAMPLE_RATE)
+		--samples-max $(SAMPLE_RATE) \
+		$<
 	@echo ""
 
 H1L1-0000_CREATE_PRIOR_DIST_STATS-$(START)-$(DURATION).xml.gz: H1L1-ALL_MASS_MODEL-$(START)-$(DURATION).h5  L1-0000_SVD-$(START)-$(DURATION).xml.gz H1-0000_SVD-$(START)-$(DURATION).xml.gz
@@ -562,7 +542,7 @@ gstlal_inspiral_calc_likelihood_0001: H1L1-0000_LLOID-$(START)-$(DURATION).xml.g
 lalapps_run_sqlite_0001: gstlal_inspiral_calc_likelihood_0001
 	# lalapps_run_sqlite_0001
 	$(TIME) lalapps_run_sqlite \
-		--sql-file $(LAL_PATH)/share/gstlal/simplify_and_cluster.sql \
+		--sql-file ../share/simplify_and_cluster.sql \
 		--tmp-space $(TMPDIR) \
 		H1L1-0000_LLOID-$(START)-$(DURATION).xml.gz
 	@touch lalapps_run_sqlite_0001
diff --git a/gstlal/pytest.ini b/gstlal/pytest.ini
index 116585b1970341cd2f4f9045b48b87d7039a6d17..90fef01e5787e9ba6b96ceaa9a4015a6e55df7a0 100644
--- a/gstlal/pytest.ini
+++ b/gstlal/pytest.ini
@@ -6,6 +6,7 @@ addopts =
     -v
     --doctest-modules
     # Ignore doctests in specific modules
+    --ignore python/bottle.py
     --ignore python/dagfile.py
     --ignore python/httpinterface.py
     --ignore python/matplotlibhelper.py