diff --git a/Snakefile b/Snakefile
index 2ed2a083b6379f6eda64aa37be70fd36b84fe839..c783a793d2f74e277d1924f0672f922e3605610f 100644
--- a/Snakefile
+++ b/Snakefile
@@ -18,7 +18,7 @@ rule align_and_count:
 	input:
 		data="{folder}/day{day}/BF_TRITC_maxZ.zarr",
 		concentrations="{folder}/concentrations.yaml",
-		template="template16_pad100-adj-sm2.tif",
+		template="v3/template_bin16_v3.tif",
 		labels="v3/labels_bin2_v4.tif"
 	output:
 		zarr = directory("{folder}/day{day}/BF_TRITC_aligned.zarr"),
@@ -26,6 +26,14 @@ rule align_and_count:
 	shell:
 		"python align.py {input.data} {output.zarr} {input.concentrations} {input.template} {input.labels} {output.table} 1" 
 
+rule correct_xy:
+	input:
+		zarr = "{folder}/day{day}/BF_TRITC_aligned-to-correct.zarr",
+		table = "{folder}/day{day}/correction.csv"
+	output:
+		zarr = directory("{folder}/day{day}/BF_TRITC_aligned-corrected.zarr")
+	shell:
+		"python correct.py {input.zarr} {input.table} {output.zarr}"
 
 rule align_and_count_2D:
 	input:
@@ -50,8 +58,8 @@ rule get_sizes_nd2:
 
 rule combine_BF_TRITC_3D_maxZ:
 	input: 
-		bf="{folder}/day{day}/BF-2D.zarr",
-		fluo="{folder}/day{day}/TRITC-3D.zarr"
+		bf="{folder}/day{day}/BF-2D.nd2",
+		fluo="{folder}/day{day}/TRITC-3D.nd2"
 	output:
 		directory("{folder}/day{day}/BF_TRITC_maxZ.zarr")
 	shell:
diff --git a/combine.py b/combine.py
index b50dd9215f8e8cbddc8f47aa1989448586e614d1..10b142ed52969dd3f5e072b65ab7ec0a39e7cb9c 100644
--- a/combine.py
+++ b/combine.py
@@ -2,11 +2,12 @@ import dask.array as da
 import os
 from zarr_tools.convert import to_zarr
 import fire
+import nd2
 
-def combine(BF_zarr_2D_path:str, TRITC_zarr_3D_path:str, out_zarr_path:str):
-    bd2d = da.from_zarr(os.path.join(BF_zarr_2D_path,'0/'))
+def combine(BF_2D_path:str, TRITC_3D_path:str, out_zarr_path:str):
+    bd2d = nd2.ND2File(BF_2D_path).to_dask()
     print('Opened BF:', bd2d)
-    fd3d = da.from_zarr(os.path.join(TRITC_zarr_3D_path,'0/'))
+    fd3d = nd2.ND2File(TRITC_3D_path).to_dask()
     print('Opened TRITC:', fd3d)
     fd2d = fd3d.max(axis=1)
     bd2d = da.stack([bd2d, fd2d], axis=1)