diff --git a/model_server/base/roiset.py b/model_server/base/roiset.py
index 962d9f8e1be69dc723fdec9f12a5099d1bb2cf04..9b5a0360e22bd58bec118c10075455fcc647f6b4 100644
--- a/model_server/base/roiset.py
+++ b/model_server/base/roiset.py
@@ -79,6 +79,7 @@ class RoiSetExportParams(BaseModel):
     object_classes: bool = False
     labels_overlay: Union[RoiSetLabelsOverlayParams, None] = None
     derived_channels: bool = False
+    make_unique_subdirectory: bool = False
 
 
 def get_label_ids(acc_seg_mask: GenericImageDataAccessor, allow_3d=False, connect_3d=True) -> InMemoryDataAccessor:
@@ -771,9 +772,9 @@ class RoiSet(object):
 
             if patch.dtype == 'uint16':
                 resampled = patch.to_8bit()
-                write_accessor_data_to_file(where / prefix / fname, resampled)
+                write_accessor_data_to_file(where / fname, resampled)
             else:
-                write_accessor_data_to_file(where / prefix / fname, patch)
+                write_accessor_data_to_file(where / fname, patch)
             return fname
 
         patches_df['patch_path'] = patches_df.apply(_export_patch, axis=1)
@@ -961,8 +962,10 @@ class RoiSet(object):
             return
 
         for k in params.dict().keys():
-            subdir = where / k
             pr = prefix
+            subdir = where / k
+            if params.make_unique_subdirectory:
+                subdir = subdir / pr
             kp = params.dict()[k]
             if kp is None:
                 continue