diff --git a/pom.xml b/pom.xml
index 582587f74a02fa5551e3ee17bae479143bdedc3d..974c0c6f78f9e12c5dc30c41ad5eee2ecce0c7fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,11 +8,11 @@
     <parent>
         <groupId>org.bioimageanalysis.icy</groupId>
         <artifactId>pom-icy</artifactId>
-        <version>3.0.0-a.1</version>
+        <version>3.0.0-a.3</version>
     </parent>
 
     <artifactId>track-manager</artifactId>
-    <version>2.0.0-a.1</version>
+    <version>2.0.0-a.2</version>
 
     <name>Track Manager</name>
     <description>
@@ -34,11 +34,4 @@
             <artifactId>spot-detection-utilities</artifactId>
         </dependency>
     </dependencies>
-
-    <repositories>
-        <repository>
-            <id>icy</id>
-            <url>https://nexus-icy.pasteur.cloud/repository/icy/</url>
-        </repository>
-    </repositories>
 </project>
\ No newline at end of file
diff --git a/src/main/java/plugins/fab/trackmanager/Link.java b/src/main/java/plugins/fab/trackmanager/Link.java
index a2fc34244e7d112f2623e2d5f193e2fc47e32660..ca6271f84af73f8f7fee896af8a6fe95dcd45519 100644
--- a/src/main/java/plugins/fab/trackmanager/Link.java
+++ b/src/main/java/plugins/fab/trackmanager/Link.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
diff --git a/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java b/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java
index 3468c730133c318595deae754e9bdbe7f5304dec..bdd7cd3dac1d9bde6bc4c3d2521095b113e2f8b2 100644
--- a/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java
+++ b/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010-2023. Institut Pasteur.
+ * Copyright (c) 2010-2024. Institut Pasteur.
  *
  * This file is part of Icy.
  * Icy is free software: you can redistribute it and/or modify
@@ -130,18 +130,10 @@ public abstract class PluginTrackManagerProcessor extends Plugin {
         return mainPanel;
     }
 
-    /*@Override
-    protected void finalize() throws Throwable {
-        trackPool = null;
-        super.finalize();
-    }*/
-
-    @SuppressWarnings("UnstableApiUsage")
     @Contract(mutates = "this")
     public final void setTrackPool(final TrackPool trackPool) {
         this.trackPool = trackPool;
     }
 
     abstract public void displaySequenceChanged();
-
 }
diff --git a/src/main/java/plugins/fab/trackmanager/TrackDetection.java b/src/main/java/plugins/fab/trackmanager/TrackDetection.java
index 2fb2b134b2c53c81e0d9259a08b844afd437eb11..cd5b4392f5e846738b95bbdc1a7f32a51f438033 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackDetection.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackDetection.java
@@ -37,11 +37,6 @@ public class TrackDetection extends JPanel {
     public TrackDetection(final Detection detection) {
         super();
         this.detection = detection;
-        // if ( detection.getDetectionType() == Detection.DETECTIONTYPE_REAL_DETECTION ) color =
-        // Color.blue;
-        // if ( detection.getDetectionType() == Detection.DETECTIONTYPE_VIRTUAL_DETECTION ) color =
-        // Color.orange;
-
     }
 
     public Detection getDetection() {
diff --git a/src/main/java/plugins/fab/trackmanager/TrackGroup.java b/src/main/java/plugins/fab/trackmanager/TrackGroup.java
index 597e931644d1ad1fe80c2a0309776b9d879053da..2d686fa18c5d1d51beac8f1d11f8c73e5364f136 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackGroup.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackGroup.java
@@ -63,7 +63,6 @@ public class TrackGroup {
     }
 
     public TrackSegment getTrackSegmentWithDetection(final Detection detection) {
-
         final ArrayList<TrackSegment> trackSegmentList = getTrackSegmentList();
 
         for (final TrackSegment ts : trackSegmentList) {
diff --git a/src/main/java/plugins/fab/trackmanager/TrackManager.java b/src/main/java/plugins/fab/trackmanager/TrackManager.java
index 9adf81560680f037f0f5940461e9be6a3e4e6351..e2664d07bab98ae6afb5f6a0099d791b6824a089 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackManager.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackManager.java
@@ -67,13 +67,8 @@ import java.util.prefs.Preferences;
  * @author Fabrice de Chaumont
  */
 @IcyPluginName("Track Manager")
-@IcyPluginIcon(path = "/track-manager.png")
+@IcyPluginIcon(path = "/plugins/fab/trackmanager/track-manager.png")
 public class TrackManager extends PluginActionable implements AdjustmentListener, ActionListener, SwimmingPoolListener, IcyFrameListener {
-    /*
-     * List of active trackEditor shared between trackeditors (not used anymore)
-     */
-    // private static ArrayList<TrackManager> trackManagerList = new ArrayList<TrackManager>();
-
     /**
      * is this track manager not used anymore (TODO:Should change to a listener structure.)
      */
@@ -124,9 +119,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
         trackPool.addTrackProcessor(ptep);
 
         // rebuild trackList
-
         rebuildTrackProcessorDisplay();
-
     }
 
     public TrackPool getTrackPool() {
@@ -134,7 +127,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
     }
 
     void rebuildTrackProcessorDisplay() {
-
         rightContentPanel.removeAll();
 
         for (final PluginTrackManagerProcessor trackProcessor : trackPool.getTrackManagerProcessorList()) {
@@ -407,7 +399,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
         // add the trackColor Processor
         final PluginDescriptor pd = PluginLoader.getPlugin("plugins.fab.trackmanager.processors.TrackProcessorColorTrack");
         loadTrackProcessor(pd);
-
     }
 
     /**
@@ -466,11 +457,9 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
 
         }
         // trackGroupSourceInnerPanel.updateUI();
-
     }
 
     private void initTrackPoolInnerPanel() {
-
         // trackingGroupSourceMenu.removeAll();
 
         // trackGroupSourceInnerPanel.removeAll();
@@ -503,7 +492,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
 
             }
         }
-
     }
 
 //    /**
@@ -538,7 +526,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
     // }
     // }
 
-    ///** List of sequences which will be kept synchronize while the t cursor are moving. */
+    //** List of sequences which will be kept synchronize while the t cursor are moving. */
     // private ArrayList<Sequence> sequenceToKeepSynchronizeInT = new ArrayList<Sequence>();
 
     /**
@@ -567,7 +555,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
         // System.out.println("Synchro sequence");
         // for (Sequence sequence : sequenceToKeepSynchronizeInT)
         // {
-        //// System.out.println("synchro on sequence : " + sequence );
+        // System.out.println("synchro on sequence : " + sequence );
         // sequence.setT(currentT);
         // }
 
@@ -582,7 +570,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
     }
 
     class CheckBoxResultSource extends JCheckBoxMenuItem implements ActionListener {
-
         // JCheckBox checkBox = new JCheckBox();
         // JToggleButton trackTimeOnSequenceButton = new JToggleButton("T");
         SwimmingObject result;
@@ -630,7 +617,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
             // }
             // }
             // ----------
-
         }
 
         // public void setSelected(boolean b) {
@@ -642,7 +628,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
             // remove the sequence tracked
             // if (trackTimeOnSequenceButton.isSelected())
             // {
-            //// sequenceToKeepSynchronizeInT.remove(sequence);
+            // sequenceToKeepSynchronizeInT.remove(sequence);
             // }
             trackingGroupSourceMenu.remove(this);
             // trackGroupSourceInnerPanel.remove(this);
@@ -657,12 +643,12 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
             // {
             // if (trackTimeOnSequenceButton.isSelected())
             // {
-            //// if (sequence != null)
-            //// sequenceToKeepSynchronizeInT.add(sequence);
+            // if (sequence != null)
+            // sequenceToKeepSynchronizeInT.add(sequence);
             // }
             // else
             // {
-            //// sequenceToKeepSynchronizeInT.remove(sequence);
+            // sequenceToKeepSynchronizeInT.remove(sequence);
             // }
             // reSynchroTSequence();
             // }
@@ -678,7 +664,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
                     // if (trackEditor != TrackManager.this)
                     // {
                     // // System.out.println("call ok");
-                    //// trackEditor.setEnableCheckBoxResultSource(result, false);
+                    // trackEditor.setEnableCheckBoxResultSource(result, false);
                     // }
                     // }
 
@@ -688,8 +674,8 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
                     // trackPool.getDisplaySequence().painterChanged( null );
                     // for (TrackManager trackEditor : trackManagerList)
                     // {
-                    //// if (trackEditor != TrackManager.this)
-                    //// trackEditor.setEnableCheckBoxResultSource(result, true);
+                    // if (trackEditor != TrackManager.this)
+                    // trackEditor.setEnableCheckBoxResultSource(result, true);
                     // }
 
                 }
@@ -1129,7 +1115,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
             int newX = (int) trackPanel.getDetectDim().getWidth() - 5;
             if (newX <= 0)
                 newX = 5;
-            trackPanel.setDetectDim(new Dimension(newX, newX));
+            trackPanel.setDetectDim(new Dimension(newX, newX)); // TODO check if 'newX' should be used as 'Y' argument
             trackPool.fireTrackEditorProcessorChange();
         }
         if (e.getSource() == zoomMoreButton) {
@@ -1151,7 +1137,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
         // .getDetectDim().getHeight() + 5));
         // trackPool.fireTrackEditorProcessorChange();
         // }
-
     }
 
     @Override
@@ -1179,7 +1164,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
                     menuItem.addActionListener(new MenuItemActionListener(plugin, PluginTrackManagerProcessor.class));
                 }
         }
-
     }
 
     public void moveTrackProcessor(final PluginTrackManagerProcessor trackEditorProcessor, final int i) {
@@ -1201,7 +1185,6 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
         trackPool.fireTrackEditorProcessorChange();
 
         // System.out.println("Demande changement de place.");
-
     }
 
     @Override
@@ -1291,11 +1274,10 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
 
     public void setDisplaySequence(final Sequence sequence) {
         sequenceSelector.setSelectedSequence(sequence);
-
     }
 
     @Override
     public void run() {
-
+        //
     }
 }
diff --git a/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java b/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java
index 6a6687bb28ce301a07d7e1b90fcbbbe5d34b568d..422a88e43df45cd8ecccdd1db99fcde525104b0d 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java
@@ -496,7 +496,8 @@ public class TrackManagerPainter extends Overlay {
     //
     // if ( StringUtil.equals(metadataName, Sequence.ID_PIXEL_SIZE_Z ))
     // {
-    //// adjustZScaling( getSequence().getPixelSizeZ() );
+
+    // adjustZScaling( getSequence().getPixelSizeZ() );
     // }
     //
     // break;
@@ -508,18 +509,7 @@ public class TrackManagerPainter extends Overlay {
     // {
     // }
 
-    private static class TrackLineSection {
-        final Detection start;
-        final Detection end;
-
-        @Contract(pure = true)
-        public TrackLineSection(final Detection start, final Detection end) {
-            super();
-
-            this.start = start;
-            this.end = end;
-        }
-
+    private record TrackLineSection(Detection start, Detection end) {
         @Contract("_ -> param1")
         public @NotNull Line2D getLine2D(final @NotNull Line2D line) {
             line.setLine(start.getX(), start.getY(), end.getX(), end.getY());
diff --git a/src/main/java/plugins/fab/trackmanager/TrackPool.java b/src/main/java/plugins/fab/trackmanager/TrackPool.java
index 6771976d3859cd897cbd4309c3ad8f775fc613b3..5d4a648433f7bba3dfc633a038a259cdba97b028 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackPool.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackPool.java
@@ -116,19 +116,17 @@ public class TrackPool {
      * Creates a virtual track
      */
     public void createVirtualTrackWith2Detection(Detection detectionStart, Detection detectionEnd) {
-
         TrackSegment segmentStart = getTrackSegmentWithDetection(detectionStart);
         TrackSegment segmentEnd = getTrackSegmentWithDetection(detectionEnd);
 
         if (segmentStart == segmentEnd) {
-            MessageDialog.showDialog("Can't link 2 detections belonging to the same track.",
-                    MessageDialog.INFORMATION_MESSAGE);
+            MessageDialog.showDialog("Can't link 2 detections belonging to the same track.", MessageDialog.INFORMATION_MESSAGE);
             return;
         }
 
-        if (segmentStart.getOwnerTrackGroup() != segmentStart.getOwnerTrackGroup()) {
-            MessageDialog.showDialog("The two tracks should be from the same track group.",
-                    MessageDialog.INFORMATION_MESSAGE);
+        //if (segmentStart.getOwnerTrackGroup() != segmentStart.getOwnerTrackGroup()) { // TODO I think it's an error
+        if (segmentStart.getOwnerTrackGroup() != segmentEnd.getOwnerTrackGroup()) {
+            MessageDialog.showDialog("The two tracks should be from the same track group.", MessageDialog.INFORMATION_MESSAGE);
             return;
         }
 
@@ -143,8 +141,7 @@ public class TrackPool {
                 // The detection is not the last of the track.
                 // Must split the start track.
 
-                final ArrayList<TrackSegment> returnList = splitTrackSegment(segmentStart,
-                        segmentStart.getDetectionIndex(detectionStart), true);
+                final ArrayList<TrackSegment> returnList = splitTrackSegment(segmentStart, segmentStart.getDetectionIndex(detectionStart), true);
                 // should render 2 segments. The first is the one we want. We take the last detection of the first tracksegment.
                 detectionStart = returnList.getFirst().getLastDetection();
                 segmentStart = getTrackSegmentWithDetection(detectionStart);
@@ -154,8 +151,7 @@ public class TrackPool {
                 // The detection is not the first of the track.
                 // Must split the end track.
 
-                final ArrayList<TrackSegment> returnList = splitTrackSegment(segmentEnd,
-                        segmentEnd.getDetectionIndex(detectionEnd) - 1, true);
+                final ArrayList<TrackSegment> returnList = splitTrackSegment(segmentEnd, segmentEnd.getDetectionIndex(detectionEnd) - 1, true);
                 // should render 2 segments. The second is the one we want. We take the first detection of the second tracksegment.
                 detectionEnd = returnList.get(1).getFirstDetection();
                 segmentEnd = getTrackSegmentWithDetection(detectionEnd);
diff --git a/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java b/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java
index e0b91c252fbc298144e7ae1ff8119522ee410eea..6776f1630db43b79121238d5d6450ce54f134845 100644
--- a/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java
+++ b/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java
@@ -39,7 +39,7 @@ import java.util.List;
  * @author Stephane Dallongeville
  */
 @IcyPluginName("Load Tracks From XML")
-@IcyPluginIcon(path = "/track-manager.png")
+@IcyPluginIcon(path = "/plugins/fab/trackmanager/track-manager.png")
 public class LoadTracksFromXML extends Plugin implements ROIBlock {
     final VarMutable file = new VarMutable("XML file", null) {
         @Override
@@ -78,6 +78,5 @@ public class LoadTracksFromXML extends Plugin implements ROIBlock {
     @Override
     public void declareOutput(final @NotNull VarList outputMap) {
         outputMap.add("tracks", tracks);
-
     }
 }
diff --git a/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java b/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java
index e8c88a1370ca228971cf56d1f8eca0718027f994..a0da90be307936b43b95c1e35a0e2c2ba1234e0a 100644
--- a/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java
+++ b/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java
@@ -38,7 +38,7 @@ import java.io.File;
  * @author Stephane Dallongeville
  */
 @IcyPluginName("Save Tracks To XML")
-@IcyPluginIcon(path = "/track-manager.png")
+@IcyPluginIcon(path = "/plugins/fab/trackmanager/track-manager.png")
 public class SaveTracksToXML extends Plugin implements ROIBlock {
     final Var<TrackGroup> tracks = new Var<>("Track group", new TrackGroup(null));
     final VarMutable file = new VarMutable("XML file", null) {
diff --git a/src/main/resources/track-manager.png b/src/main/resources/plugins/fab/trackmanager/track-manager.png
similarity index 100%
rename from src/main/resources/track-manager.png
rename to src/main/resources/plugins/fab/trackmanager/track-manager.png