diff --git a/2d_spots_in_fibers.py b/2d_spots_in_fibers.py
index 3d169ac4074d7951e6a63582eda9bb7332428a80..0319dd474d4ebc23cd4a50bbb4c673a0a1ce678a 100644
--- a/2d_spots_in_fibers.py
+++ b/2d_spots_in_fibers.py
@@ -12,13 +12,11 @@
 # trackmate imports
 from fiji.plugin.trackmate import Settings
 from fiji.plugin.trackmate import TrackMate
-from fiji.plugin.trackmate.cellpose import CellposeDetectorFactory
-from fiji.plugin.trackmate.cellpose.CellposeSettings import PretrainedModel
 from fiji.plugin.trackmate.detection import DogDetectorFactory
 from fiji.plugin.trackmate.action import LabelImgExporter
 # ij imports
 from ij import IJ
-from ij.plugin import ZProjector, ImageCalculator
+from ij.plugin import ImageCalculator
 from ij.plugin.frame import RoiManager
 from ij.measure import ResultsTable
 # Bio-Formats imports
@@ -28,8 +26,6 @@ from loci.plugins.in import ImporterOptions
 from loci.formats import ImageReader, MetadataTools, Memoizer
 # MorpholibJ imports
 from inra.ijpb.binary import BinaryImages
-# CLIJ imports
-from net.haesleinhuepf.clij2 import CLIJ2
 # imglib2 imports
 from net.imglib2.img.display.imagej import ImageJFunctions
 from net.imglib2.roi import Regions
@@ -61,114 +57,6 @@ def get_parentdir_filename_ext_from_path(path):
     return (parent_dir, filename, ext)
 
 
-def tile_image(image_width, image_height, tile_width, tile_height, overlap):
-    """ Calculate tiles of an image of given its dimensions. Calculates tile start coordinates and tile dimensions including overlap,
-    which can directly be used in Bio-Formats "crop" function. Also calculates tile crop start coordinates and dimensions 
-    to remove the overlap and the crops start coordinates to re-assemble the original size image. Useful to e.g. segment a large
-    already stitched image tile by tile.
-
-    Parameters
-    ----------
-    image_width : int
-        the input images width in pixels
-    image_height : int
-        the input images height in pixels
-    tile_width : int
-        the desired tile width in pixels
-    tile_height : int
-        the desired tile height in pixels
-    overlap : int
-        the desired tile overlap in pixels
-
-    Returns
-    -------
-    list
-        all_tile_regions: tile coordinates and dimensions including overlap
-        all_crop_regions: tile coordinates and dimensions to remove the overlap again
-        all_tile_start_no_overlap: start coordinates of the tiles without overlap to re-assemble the original size image
-    """
-    # TODO: this function likely needs refactoring to be more clear and readable
-    number_of_columns = image_width // tile_width # is a floored division
-    column_remainder_px = image_width % tile_width
-    number_of_rows = image_height // tile_height
-    row_remainder_px = image_height % tile_height
-    all_tile_regions = []
-    all_crop_regions = []
-    all_tile_start_no_overlap = []
-
-    for current_row in range(number_of_rows):
-        if current_row == number_of_rows -1 :
-            tile_height_boarder_addition =  row_remainder_px # increase tile height in the last row
-        else:
-            tile_height_boarder_addition = 0
-
-        for current_column in range (number_of_columns):
-            if current_column == number_of_columns - 1 :
-                tile_width_boarder_addition = column_remainder_px # increase tile width in the last column
-            else:
-                tile_width_boarder_addition = 0
-
-            tile_start_x_no_overlap = current_column * tile_width
-            tile_start_y_no_overlap = current_row * tile_height
-
-            if current_column > 0:
-                tile_start_x = current_column * tile_width - overlap
-                crop_start_x = overlap
-            else:
-                tile_start_x = 0
-                crop_start_x = 0
-
-            if current_row > 0:
-                tile_start_y = current_row * tile_height - overlap
-                crop_start_y = overlap
-            else:
-                tile_start_y = 0
-                crop_start_y = 0
-
-            if current_column == 0 or current_column == number_of_columns - 1:
-                current_tile_width = tile_width + overlap + tile_width_boarder_addition
-            else:
-                current_tile_width = tile_width + 2 * overlap
-
-            if current_row == 0 or current_row == number_of_rows - 1:
-                current_tile_height = tile_height + overlap + tile_height_boarder_addition
-            else:
-                current_tile_height = tile_height + 2 * overlap
-
-            tile_region = [tile_start_x, tile_start_y, current_tile_width, current_tile_height]
-            crop_region = [crop_start_x, crop_start_y, current_tile_width - overlap, current_tile_height - overlap]
-            tile_start_no_overlap = [tile_start_x_no_overlap, tile_start_y_no_overlap]
-
-            all_tile_regions.append(tile_region)
-            all_crop_regions.append(crop_region)
-            all_tile_start_no_overlap.append(tile_start_no_overlap)
-
-    return all_tile_regions, all_crop_regions, all_tile_start_no_overlap
-
-
-def create_empty_image(bit_depth, image_width, image_height):
-    """creates an empty image of given dimensions. The image is 2D, filled with black pixels of value 0.
-
-    Parameters
-    ----------
-    bit_depth : int
-        the image bit dept
-    image_width : int
-        image width in px
-    image_height : int
-        image height in px
-
-    Returns
-    -------
-    ImagePlus
-        the empty image
-    """
-
-    canvas = IJ.createImage("mosaic", str(bit_depth) + "-bit black", image_width, image_height, 1)
-
-    return canvas
-
-
 def write_bf_memoryfile(path_to_file):
     """Write a BF memo-file so subsequent access to the same file is faster.
 
@@ -321,53 +209,6 @@ def run_trackmate_dog_spot_detector(imp, spot_diameter, quality_threshold):
     return label_imp
 
 
-def run_trackmate_cellpose_detector(imp):
-    """Run TrackMates CellPose detector on a target image
-
-    Parameters
-    ----------
-    imp : ImagePlus
-        the input image
-
-    Returns
-    -------
-    ImagePlus
-        a label image of the detected regions.
-    """
-
-    cal = imp.getCalibration()
-    settings = Settings(imp)
-
-    # TODO: expose more parameters
-    settings.detectorFactory = CellposeDetectorFactory()
-    settings.detectorSettings['TARGET_CHANNEL'] = 0
-    settings.detectorSettings['OPTIONAL_CHANNEL_2'] = 0
-    settings.detectorSettings['CELLPOSE_PYTHON_FILEPATH'] = 'S:/cellpose_env/python.exe'
-    settings.detectorSettings['CELLPOSE_MODEL_FILEPATH'] = ''	
-    settings.detectorSettings['CELLPOSE_MODEL'] = PretrainedModel.CYTO
-    settings.detectorSettings['CELL_DIAMETER'] = 30.0
-    settings.detectorSettings['USE_GPU'] = True
-    settings.detectorSettings['SIMPLIFY_CONTOURS'] = True	
-
-    trackmate = TrackMate(settings)
-    trackmate.computeSpotFeatures(False)
-    trackmate.computeTrackFeatures(False)
-
-    if not trackmate.checkInput():
-        print( str( trackmate.getErrorMessage() ) )
-
-    if not trackmate.process():
-        print( str( trackmate.getErrorMessage() ) )
-
-    exportSpotsAsDots = False
-    exportTracksOnly = False
-    label_imp = LabelImgExporter.createLabelImagePlus(trackmate, exportSpotsAsDots, exportTracksOnly, False)
-    label_imp.setCalibration(cal)
-    imp.close() 
-
-    return label_imp
-
-
 def get_threshold_from_method(imp, method):
     """returns the threshold value of chosen IJ AutoThreshold method from a stack (hyperstack?)
 
@@ -423,109 +264,6 @@ def convert_to_binary(imp, threshold=1, scale_binary=True):
     return mask_imp
 
 
-def erode_labelimp_gpu(label_imp, radius, relabel_islands=True):
-    """Erode a label image on the GPU.
-
-    Parameters
-    ----------
-    label_imp : ImagePlus
-        the input image
-    radius : float
-        radius used for erosion
-    relabel_islands : bool, optional
-        if True, split objects will get new labels each , by default True
-
-    Returns
-    -------
-    ImagePlus
-        the eroded label image
-    """
-
-    clij2 = CLIJ2.getInstance()
-    labels_input = clij2.push(label_imp)
-    labels_destination = clij2.create(labels_input)
-    radius = 1.0
-    clij2.erodeLabels(labels_input, labels_destination, radius, relabel_islands)
-    eroded_labelimp = clij2.pull(labels_destination)
-    clij2.release(labels_input)
-    clij2.release(labels_destination)
-    label_imp.close()
-
-    return eroded_labelimp
-
-
-def remove_tileoverlap(imp, crop_region):
-    """Crop an image to specified dimensions.
-    The operation is destructive, the original image is lost.
-
-    Parameters
-    ----------
-    imp : ImagePlus
-        the input image
-    crop_region : list or array of int
-        the crop region in the format of [start_x, start_y, crop_width, crop_height]
-
-    Returns
-    -------
-    ImagePlus
-        the cropped image
-    """
-
-    start_x = crop_region[0]
-    start_y = crop_region[1]
-    crop_width = crop_region[2]
-    crop_height = crop_region[3]
-    imp.setRoi(start_x, start_y, crop_width, crop_height)
-    cropped_imp = imp.crop()
-    imp.close()
-
-    return cropped_imp
-
-
-def copy_and_paste_image(source, target, start_coordinates_xy):
-    """Copy the source image and paste it into the target image
-
-    Parameters
-    ----------
-    source : ImagePlus
-        the source image
-    target : ImagePlus
-        the target image
-    start_coordinates_xy : list or array of int
-        the x and y coordinates in the target image where the source image will be pasted
-    """
-    source.copy()
-    start_x = start_coordinates_xy[0]
-    start_y = start_coordinates_xy[1]
-    target.paste(start_x, start_y)
-    source.close()
-
-
-def merge_touching_labels(label_imp, bit_depth):
-    """merge touching labels in a label image so they have the same label ID.
-
-    Parameters
-    ----------
-    label_imp : ImagePlus
-        the label image with touching labels of different label ID
-    bit_depth : int
-        the image bit depth
-
-    Returns
-    -------
-    ImagePlus
-        the label image with merged touching labels
-    """
-
-    binary_imp = BinaryImages.binarize(label_imp)
-    connectivity = 8
-    merged_label_imp = BinaryImages.componentsLabeling(binary_imp, connectivity, bit_depth)
-    label_imp.close()
-    binary_imp.close()
-
-    return merged_label_imp
-
-
 def save_image_as_IJtif(imp, filename, suffix, target):
     """Save the image as ImageJ-Tiff
 
@@ -547,25 +285,6 @@ def save_image_as_IJtif(imp, filename, suffix, target):
     IJ.saveAs(imp, "Tiff", savepath)
 
 
-def measure_label_size_shape_2d(label_imp):
-    rm = RoiManager.getInstance()
-    if not rm:
-        rm = RoiManager()
-    rm.reset()
-    rt = ResultsTable()
-    
-    command.run( Labels2Rois , False , 'imp' , label_imp , 'rm', rm).get()
-    IJ.run("Set Measurements...", "area centroid perimeter shape feret's redirect=None decimal=3")
-    rm.runCommand(label_imp,"Deselect")
-    rm.runCommand(label_imp,"Measure")
-    rm.reset()
-    IJ.renameResults("Results", "Size and shape features")
-    results_table = rt.getResultsTable("Size and shape features")
-    
-    
-    return results_table
-
-
 def convert_labelimage_to_imglib2regions(imp):
     """Convert a ImagePlus label image to imglib2 regions