diff --git a/extensions/chaeo/util.py b/extensions/chaeo/util.py
index 7a8406dbe3cb98a43db20709e9f5afdb0eee7a61..411aafd7313a566e01139a52e6cae5b28be44c3c 100644
--- a/extensions/chaeo/util.py
+++ b/extensions/chaeo/util.py
@@ -86,4 +86,5 @@ def loop_workflow(files, where_output, workflow_func, params,
                     InMemoryDataAccessor(result['interm'][k])
                 )
 
-    pd.DataFrame(failures).to_csv(Path(where_output) / 'failures.csv')
\ No newline at end of file
+    if len(failures) > 0:
+        pd.DataFrame(failures).to_csv(Path(where_output) / 'failures.csv')
\ No newline at end of file
diff --git a/extensions/chaeo/workflows.py b/extensions/chaeo/workflows.py
index 332f8f9f423adc1668ad33ace802cf24b581709d..c1508f6cac02a59db36c03e135d74daac3448a50 100644
--- a/extensions/chaeo/workflows.py
+++ b/extensions/chaeo/workflows.py
@@ -32,7 +32,6 @@ def export_patches_from_multichannel_zstack(
         export_patch_masks=True,
         export_patch_label_maps=True,
 ) -> Dict:
-
     ti = Timer()
     stack = generate_file_accessor(Path(input_zstack_path))
     fstem = Path(input_zstack_path).stem
@@ -86,7 +85,7 @@ def export_patches_from_multichannel_zstack(
 
     if export_2d_patches_for_annotation:
         files = export_multichannel_patches_from_zstack(
-            Path(where_output) / '2d_patches',
+            Path(where_output) / '2d_patches_annotation',
             stack,
             zmask_meta,
             prefix=fstem,
@@ -109,7 +108,7 @@ def export_patches_from_multichannel_zstack(
 
     if export_2d_patches_for_training:
         files = export_multichannel_patches_from_zstack(
-            Path(where_output) / '2d_patches',
+            Path(where_output) / '2d_patches_training',
             stack.get_one_channel_data(4),
             zmask_meta,
             prefix=fstem,