diff --git a/1_identify_fibers.py b/1_identify_fibers.py
index 0c17e2931bca2ce75c1aa3da788fd3c4c33454af..f33076fda4f01cead2b932bec5c3b6dd76c9dfc6 100755
--- a/1_identify_fibers.py
+++ b/1_identify_fibers.py
@@ -82,7 +82,7 @@ def fix_ij_dirs(path):
     """
 
     fixed_path = str(path).replace("\\", "/")
-    fixed_path = fixed_path + "/"
+    # fixed_path = fixed_path + "/"
 
     return fixed_path
 
@@ -110,7 +110,7 @@ def open_image_with_BF(path_to_file):
 
 
 def fix_BF_czi_imagetitle(imp):
-    image_title = os.path.basename( imp.getTitle() )
+    image_title = os.path.basename( imp.getShortTitle() )
     image_title = image_title.replace(".czi", "")
     image_title = image_title.replace(" ", "_")
     image_title = image_title.replace("_-_", "")
@@ -505,16 +505,18 @@ raw = open_image_with_BF(path_to_image)
 # get image info
 raw_image_calibration = raw.getCalibration()
 raw_image_title = fix_BF_czi_imagetitle(raw)
+print("raw image title: ", str(raw_image_title))
 
 # take care of paths and directories
-output_dir = fix_ij_dirs(output_dir) + str(raw_image_title) + "/1_identify_fibers/"
+output_dir = fix_ij_dirs(output_dir) + "/" + str(raw_image_title) + "/1_identify_fibers"
+print("output_dir: ", str(output_dir))
 
-if not os.path.exists( output_dir ):
-    os.makedirs( output_dir )
+if not os.path.exists( str(output_dir) ):
+    os.makedirs( str(output_dir) )
 
 classifiers_dir = fix_ij_dirs(classifiers_dir)
-primary_model = classifiers_dir + "primary.model"
-secondary_model = classifiers_dir + "secondary_central_nuclei.model"
+primary_model = classifiers_dir + "/" + "primary.model"
+secondary_model = classifiers_dir + "/" + "secondary_central_nuclei.model"
 
 # update the log for the user
 IJ.log( "Now working on " + str(raw_image_title) )
@@ -543,7 +545,7 @@ weka_result2 = apply_weka_model(secondary_model, weka_result1, tiling_factor )
 delete_channel(weka_result2, 1)
 weka_result2.setCalibration(raw_image_calibration)
 process_weka_result(weka_result2)
-IJ.saveAs(weka_result2, "Tiff", output_dir + raw_image_title + "_all_fibers_binary")
+IJ.saveAs(weka_result2, "Tiff", output_dir + "/" + raw_image_title + "_all_fibers_binary")
 eda_parameters = [minAr, maxAr, minPer, maxPer, minCir, maxCir, minRnd, maxRnd, minSol, maxSol, minFAR, maxFAR, minMinFer, maxMinFer]
 raw.show() # EPA will not work if no image is shown
 run_extended_particle_analyzer(weka_result2, eda_parameters)
@@ -553,7 +555,7 @@ rm.hide()
 raw.hide()
 enlarge_all_rois( enlarge, rm, raw_image_calibration.pixelWidth )
 renumber_rois(rm)
-save_all_rois( rm, output_dir + "all_fiber_rois.zip" )
+save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_rois.zip" )
 
 # check for positive fibers
 if fiber_channel > 0:
@@ -565,7 +567,7 @@ if fiber_channel > 0:
     change_all_roi_color(rm, "blue")
     positive_fibers = select_positive_fibers( raw, fiber_channel, rm, min_fiber_intensity  )
     change_subset_roi_color(rm, positive_fibers, "magenta")
-    save_selected_rois( rm, positive_fibers, output_dir + "mhc_positive_fiber_rois.zip")
+    save_selected_rois( rm, positive_fibers, output_dir + "/" + raw_image_title + "_mhc_positive_fiber_rois.zip")
 
 # measure size & shape, save
 IJ.run("Set Measurements...", "area perimeter shape feret's redirect=None decimal=4")
@@ -583,7 +585,7 @@ if fiber_channel > 0:
     add_results( rt, "MHC Positive Fibers (magenta)", positive_fibers, "YES")
     print rt.size()
 
-rt.save(output_dir + "all_fibers_results.csv")
+rt.save(output_dir + "/" + raw_image_title + "_all_fibers_results.csv")
 print "saved the all_fibers_results.csv"
 # dress up the original image, save a overlay-png, present original to the user
 rm.show()
@@ -593,7 +595,7 @@ raw.setDisplayMode(IJ.COMPOSITE)
 enhance_contrast( raw )
 IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png
 qc_duplicate = raw.duplicate()
-IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_all_fibers")
+IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_all_fibers")
 qc_duplicate.close()
 wm.toFront( raw.getWindow() )
 IJ.run("Remove Overlay", "")
@@ -603,6 +605,6 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0
 IJ.log("total time in minutes: " + str(total_execution_time_min))
 IJ.log( "~~ all done ~~" )
 IJ.selectWindow("Log")
-IJ.saveAs("Text", str(output_dir + raw_image_title + "_all_fibers_Log"))
+IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_all_fibers_Log"))
 if close_raw == True:
     raw.close()
\ No newline at end of file
diff --git a/2a_identify_MHC_positive_fibers.py b/2a_identify_MHC_positive_fibers.py
old mode 100644
new mode 100755
index 4d6eb6cc092467a1a2896f74b6e2008eaf0bb8ae..3744090a5e696a4f551fc41ea5587ff61bfc3a6a
--- a/2a_identify_MHC_positive_fibers.py
+++ b/2a_identify_MHC_positive_fibers.py
@@ -85,7 +85,7 @@ def open_image_with_BF(path_to_file):
 
 
 def fix_BF_czi_imagetitle(imp):
-    image_title = os.path.basename( imp.getTitle() )
+    image_title = os.path.basename( imp.getShortTitle() )
     image_title = image_title.replace(".czi", "")
     image_title = image_title.replace(" ", "_")
     image_title = image_title.replace("_-_", "")
@@ -364,13 +364,14 @@ raw = open_image_with_BF(path_to_image)
 # get image info
 raw_image_calibration = raw.getCalibration()
 raw_image_title = fix_BF_czi_imagetitle(raw)
+print("raw image title: ", str(raw_image_title))
 
 # take care of paths and directories
 input_rois_path = fix_ij_dirs( roi_zip )
-output_dir = fix_ij_dirs(output_dir) + "/2a_identify_MHC_positive_fibers/"
+output_dir = fix_ij_dirs(output_dir) + "/2a_identify_MHC_positive_fibers"
 
-if not os.path.exists( output_dir ):
-    os.makedirs( output_dir )
+if not os.path.exists( str(output_dir) ):
+    os.makedirs( str(output_dir) )
 
 # update the log for the user
 IJ.log( "Now working on " + str(raw_image_title) )
@@ -394,7 +395,7 @@ IJ.log( "fiber intensity threshold: " + str(min_fiber_intensity) )
 change_all_roi_color(rm, "blue")
 positive_fibers = select_positive_fibers( raw, fiber_channel, rm, min_fiber_intensity  )
 change_subset_roi_color(rm, positive_fibers, "magenta")
-save_selected_rois( rm, positive_fibers, output_dir + "mhc_positive_fiber_rois.zip")
+save_selected_rois( rm, positive_fibers, output_dir + "/" + raw_image_title + "_mhc_positive_fiber_rois.zip")
 
 # measure size & shape, save
 IJ.run("Set Measurements...", "area perimeter shape feret's redirect=None decimal=4")
@@ -402,7 +403,7 @@ IJ.run("Clear Results", "")
 measure_in_all_rois( raw, fiber_channel, rm )
 preset_results_column( rt, "MHC Positive Fibers (magenta)", "NO" )
 add_results( rt, "MHC Positive Fibers (magenta)", positive_fibers, "YES")
-rt.save(output_dir + "_mhc_positive_fibers_results.csv")
+rt.save(output_dir + "/" + raw_image_title + "_mhc_positive_fibers_results.csv")
 
 # dress up the original image, save a overlay-png, present original to the user
 rm.show()
@@ -412,7 +413,7 @@ raw.setDisplayMode(IJ.COMPOSITE)
 enhance_contrast( raw )
 IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png
 qc_duplicate = raw.duplicate()
-IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_mhc_positive_fibers")
+IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_mhc_positive_fibers")
 qc_duplicate.close()
 wm.toFront( raw.getWindow() )
 IJ.run("Remove Overlay", "")
@@ -422,4 +423,4 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0
 IJ.log("total time in minutes: " + str(total_execution_time_min))
 IJ.log( "~~ all done ~~" )
 IJ.selectWindow("Log")
-IJ.saveAs("Text", str(output_dir + raw_image_title + "_mhc_positive_fibers_Log"))
\ No newline at end of file
+IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_mhc_positive_fibers_Log"))
\ No newline at end of file
diff --git a/2b_central_nuclei_counter.py b/2b_central_nuclei_counter.py
old mode 100644
new mode 100755
index 0df41e67cb7c59119be9c2bc7d1095925035184e..f15c0486988718e117cc0f8c55055c3884a80047
--- a/2b_central_nuclei_counter.py
+++ b/2b_central_nuclei_counter.py
@@ -90,7 +90,7 @@ def open_image_with_BF(path_to_file):
 
 
 def fix_BF_czi_imagetitle(imp):
-    image_title = os.path.basename( imp.getTitle() )
+    image_title = os.path.basename( imp.getShortTitle() )
     image_title = image_title.replace(".czi", "")
     image_title = image_title.replace(" ", "_")
     image_title = image_title.replace("_-_", "")
@@ -373,10 +373,10 @@ raw_image_title = fix_BF_czi_imagetitle(raw)
 
 # take care of paths and directories
 input_rois_path = fix_ij_dirs( roi_zip )
-output_dir = fix_ij_dirs(output_dir) + "/2b_central_nuclei_counter/"
+output_dir = fix_ij_dirs(output_dir) + "/2b_central_nuclei_counter"
 
-if not os.path.exists( output_dir ):
-    os.makedirs( output_dir )
+if not os.path.exists( str(output_dir) ):
+    os.makedirs( str(output_dir) )
 
 # open ROIS and show on image
 open_rois_from_zip( rm, input_rois_path )
@@ -396,7 +396,7 @@ rm.hide()
 raw.hide()
 scale_all_rois( rm, shrink )
 renumber_rois(rm)
-save_all_rois( rm, output_dir + "all_fiber_rois_shrunk.zip" )
+save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_rois_shrunk.zip" )
 
 if min_nucleus_intensity == 0:
     min_nucleus_intensity = get_threshold_from_method(raw, nucleus_channel, "Mean")[0]
@@ -407,8 +407,8 @@ central_nuclei_fibers = select_central_nuclei( raw, nucleus_channel, rm, min_nuc
 clear_ij_roi_manager(rm)
 open_rois_from_zip( rm, input_rois_path )
 change_subset_roi_color(rm, central_nuclei_fibers, "yellow")
-save_selected_rois( rm, central_nuclei_fibers, output_dir + "central_nuclei_fiber_rois.zip")
-save_all_rois( rm, output_dir + "all_fiber_rois_central_nuclei_color-coded.zip" )
+save_selected_rois( rm, central_nuclei_fibers, output_dir + "/" + raw_image_title + "_central_nuclei_fiber_rois.zip")
+save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_rois_central_nuclei_color-coded.zip" )
 
 # measure size & shape, add column for pos nuclei and fiber findings, save
 IJ.run("Set Measurements...", "area perimeter shape feret's redirect=None decimal=4")
@@ -416,7 +416,7 @@ IJ.run("Clear Results", "")
 measure_in_all_rois( raw, nucleus_channel, rm )
 preset_results_column( rt, "Centralized Nuclei (yellow)" , "NO" )
 add_results( rt, "Centralized Nuclei (yellow)", central_nuclei_fibers, "YES")
-rt.save(output_dir + "centralized_nuclei_results.csv")
+rt.save(output_dir + "/" + raw_image_title + "_centralized_nuclei_results.csv")
 
 # dress up the original image, save a overlay-png, present original to the user
 rm.show()
@@ -426,7 +426,7 @@ raw.setDisplayMode(IJ.COMPOSITE)
 enhance_contrast( raw )
 IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png
 qc_duplicate = raw.duplicate()
-IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_centralized_nuclei")
+IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_centralized_nuclei")
 qc_duplicate.close()
 wm.toFront( raw.getWindow() )
 IJ.run("Remove Overlay", "")
@@ -436,4 +436,4 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0
 IJ.log("total time in minutes: " + str(total_execution_time_min))
 IJ.log( "~~ all done ~~" )
 IJ.selectWindow("Log")
-IJ.saveAs("Text", str(output_dir + raw_image_title + "_centralized_nuclei_Log"))
\ No newline at end of file
+IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_centralized_nuclei_Log"))
\ No newline at end of file
diff --git a/2c_fibertyping.py b/2c_fibertyping.py
old mode 100644
new mode 100755
index 5a4288d91cbbc819e6ad715da62382815817c219..91b8c6ad9d37a3506677a8be7508970e779b8e7a
--- a/2c_fibertyping.py
+++ b/2c_fibertyping.py
@@ -93,7 +93,7 @@ def open_image_with_BF(path_to_file):
 
 
 def fix_BF_czi_imagetitle(imp):
-    image_title = os.path.basename( imp.getTitle() )
+    image_title = os.path.basename( imp.getShortTitle() )
     image_title = image_title.replace(".czi", "")
     image_title = image_title.replace(" ", "_")
     image_title = image_title.replace("_-_", "")
@@ -374,14 +374,11 @@ raw_image_calibration = raw.getCalibration()
 raw_image_title = fix_BF_czi_imagetitle(raw)
 
 # take care of paths and directories
-# output_dir = os.path.dirname(str(roi_zip))
-# output_dir = fix_ij_dirs(output_dir)
-
 input_rois_path = fix_ij_dirs( roi_zip )
-output_dir = fix_ij_dirs(output_dir) + "/2c_fibertyping/"
+output_dir = fix_ij_dirs(output_dir) + "/2c_fibertyping"
 
-if not os.path.exists( output_dir ):
-    os.makedirs( output_dir )
+if not os.path.exists( str(output_dir) ):
+    os.makedirs( str(output_dir) )
 
 # open ROIS and show on image
 open_rois_from_zip( rm, str(input_rois_path) )
@@ -420,7 +417,7 @@ for index, fiber_channel in enumerate(all_fiber_channels):
         all_fiber_subsets[index] = positive_fibers
         if len(positive_fibers) > 0:
             change_subset_roi_color(rm, positive_fibers, roi_colors[index])
-            save_selected_rois( rm, positive_fibers, output_dir + "positive_fiber_rois_c" + str( fiber_channel ) + ".zip")
+            save_selected_rois( rm, positive_fibers, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c" + str( fiber_channel ) + ".zip")
             add_results( rt, "channel " + str(fiber_channel) + " positive (" + roi_colors[fiber_channel-1] + ")", positive_fibers, "YES")
 
 # single positive
@@ -438,30 +435,30 @@ positive_c1_c2_c3 = list( set(positive_c1_c2).intersection(all_fiber_subsets[2])
 if len(positive_c1_c2) > 0:
     preset_results_column( rt, "channel 1,2 positive (magenta)", "NO" )
     change_subset_roi_color(rm, positive_c1_c2, "magenta")
-    save_selected_rois( rm, positive_c1_c2, output_dir + "positive_fiber_rois_c1_c2.zip")
+    save_selected_rois( rm, positive_c1_c2, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c1_c2.zip")
     add_results( rt, "channel 1,2 positive (magenta)", positive_c1_c2, "YES")
 
 if len(positive_c1_c3) > 0:
     preset_results_column( rt, "channel 1,3 positive (yellow)", "NO" )
     change_subset_roi_color(rm, positive_c1_c3, "yellow")
-    save_selected_rois( rm, positive_c1_c3, output_dir + "positive_fiber_rois_c1_c3.zip")
+    save_selected_rois( rm, positive_c1_c3, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c1_c3.zip")
     add_results( rt, "channel 1,3 positive (yellow)", positive_c1_c3, "YES")
 
 if len(positive_c2_c3) > 0:
     preset_results_column( rt, "channel 2,3 positive (cyan)", "NO" )
     change_subset_roi_color(rm, positive_c2_c3, "cyan")
-    save_selected_rois( rm, positive_c2_c3, output_dir + "positive_fiber_rois_c2_c3.zip")
+    save_selected_rois( rm, positive_c2_c3, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c2_c3.zip")
     add_results( rt, "channel 2,3 positive (cyan)", positive_c2_c3, "YES")
 
 if len(positive_c1_c2_c3) > 0:
     preset_results_column( rt, "channel 1,2,3 positive (white)", "NO" )
     change_subset_roi_color(rm, positive_c1_c2_c3, "white")
-    save_selected_rois( rm, positive_c1_c2_c3, output_dir + "positive_fiber_rois_c1_c2_c3.zip")
+    save_selected_rois( rm, positive_c1_c2_c3, output_dir + "/" + raw_image_title + "_positive_fiber_rois_c1_c2_c3.zip")
     add_results( rt, "channel 1,2,3 positive (white)", positive_c1_c2_c3, "YES")
 
 # save all results together
-save_all_rois( rm, output_dir + "all_fiber_type_rois_color-coded.zip" )
-rt.save(output_dir + "fibertyping_results.csv")
+save_all_rois( rm, output_dir + "/" + raw_image_title + "_all_fiber_type_rois_color-coded.zip" )
+rt.save(output_dir + "/" + raw_image_title + "_fibertyping_results.csv")
 
 # dress up the original image, save a overlay-png, present original to the user
 raw.show()
@@ -470,7 +467,7 @@ raw.setDisplayMode(IJ.COMPOSITE)
 enhance_contrast( raw )
 IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png
 qc_duplicate = raw.duplicate()
-IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_fibertyping")
+IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_fibertyping")
 qc_duplicate.close()
 wm.toFront( raw.getWindow() )
 IJ.run("Remove Overlay", "")
@@ -480,6 +477,6 @@ total_execution_time_min = (time.time() - execution_start_time) / 60.0
 IJ.log("total time in minutes: " + str(total_execution_time_min))
 IJ.log( "~~ all done ~~" )
 IJ.selectWindow("Log")
-IJ.saveAs("Text", str(output_dir + raw_image_title + "_fibertyping_Log"))
+IJ.saveAs("Text", str(output_dir + "/" + raw_image_title + "_fibertyping_Log"))
 if close_raw == True:
     raw.close()
\ No newline at end of file
diff --git a/3_manual_rerun.py b/3_manual_rerun.py
old mode 100644
new mode 100755
index a8908d7dcccd4f278f58869af175c8133e5a5fdf..1358701fa62521daf9dc501a3561a547cfe151af
--- a/3_manual_rerun.py
+++ b/3_manual_rerun.py
@@ -30,7 +30,7 @@ def fix_ij_dirs(path):
 
 
 def fix_BF_czi_imagetitle(imp):
-    image_title = os.path.basename( imp.getTitle() )
+    image_title = os.path.basename( imp.getShortTitle() )
     image_title = image_title.replace(".czi", "")
     image_title = image_title.replace(" ", "_")
     image_title = image_title.replace("_-_", "")
@@ -164,19 +164,19 @@ def show_all_rois_on_image(rm, imp):
     rm.runCommand(imp,"Show All")
 
 
-output_dir = fix_ij_dirs(output_dir) + "/3_manual_rerun/"
-if not os.path.exists( output_dir ):
-    os.makedirs( output_dir )
+output_dir = fix_ij_dirs(output_dir) + "/3_manual_rerun"
+if not os.path.exists( str(output_dir) ):
+    os.makedirs( str(output_dir) )
 
 rt.reset()
 raw_image_title = fix_BF_czi_imagetitle(raw)
 renumber_rois(rm)
-save_all_rois( rm, output_dir + "manual_rerun_all_fiber_rois_color-coded.zip" )
+save_all_rois( rm, output_dir + "/" + raw_image_title + "_manual_rerun_all_fiber_rois_color-coded.zip" )
 roi_colors = extract_color_of_all_rois(rm)
 WaitForUserDialog("Choose measurements", "Set measurements in Analyze > Set Measurements, then click OK").show()
 measure_in_all_rois(raw, measurement_channel, rm)
 add_results_to_resultstable(rt, "ROI color", roi_colors )
-rt.save(output_dir + "manual_rerun_results.csv")
+rt.save(output_dir + "/" + raw_image_title + "_manual_rerun_results.csv")
 
 # dress up the original image, save a overlay-png, present original to the user
 raw.show()
@@ -185,7 +185,7 @@ raw.setDisplayMode(IJ.COMPOSITE)
 enhance_contrast( raw )
 IJ.run("From ROI Manager", "") # ROIs -> overlays so they show up in the saved png
 qc_duplicate = raw.duplicate()
-IJ.saveAs(qc_duplicate, "PNG", output_dir + raw_image_title + "_manual_rerun")
+IJ.saveAs(qc_duplicate, "PNG", output_dir + "/" + raw_image_title + "_manual_rerun")
 qc_duplicate.close()
 wm.toFront( raw.getWindow() )
 IJ.run("Remove Overlay", "")