diff --git a/.gitignore b/.gitignore
index 7f5de7386c755a464525cef7566010bd05abae0d..57f16fb67c1b1589981416b323d7a9debc728665 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,41 @@
-.idea/
-.settings/
-bin/
-build/
+/build*
+/workspace
+setting.xml
+release/
 target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+icy.log
+
+### IntelliJ IDEA ###
+.idea/
+*.iws
 *.iml
-*.jar
+*.ipr
+
+### Eclipse ###
+.apt_generated
 .classpath
+.factorypath
 .project
-export.jardesc
-**/.DS_Store
\ No newline at end of file
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+**/.DS_Store
+Icon?
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 9dad1afc37919a9d308b8fcaf33d26eb0755078b..582587f74a02fa5551e3ee17bae479143bdedc3d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,13 +8,11 @@
     <parent>
         <groupId>org.bioimageanalysis.icy</groupId>
         <artifactId>pom-icy</artifactId>
-        <version>2.2.0</version>
+        <version>3.0.0-a.1</version>
     </parent>
 
     <artifactId>track-manager</artifactId>
-    <version>2.0.0</version>
-
-    <packaging>jar</packaging>
+    <version>2.0.0-a.1</version>
 
     <name>Track Manager</name>
     <description>
@@ -23,6 +21,10 @@
     </description>
 
     <dependencies>
+        <dependency>
+            <groupId>org.bioimageanalysis.icy</groupId>
+            <artifactId>ezplug</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.bioimageanalysis.icy</groupId>
             <artifactId>protocols</artifactId>
@@ -36,7 +38,7 @@
     <repositories>
         <repository>
             <id>icy</id>
-            <url>https://icy-nexus.pasteur.fr/repository/Icy/</url>
+            <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 72db57c75ae5a2346ce0e417229d011bce19576c..8145eb344416b3dbc7f7b7aab33b430a192edb79 100644
--- a/src/main/java/plugins/fab/trackmanager/Link.java
+++ b/src/main/java/plugins/fab/trackmanager/Link.java
@@ -21,7 +21,6 @@ package plugins.fab.trackmanager;
 import plugins.nchenouard.spot.Detection;
 
 public class Link {
-
     TrackSegment start;
     TrackSegment end;
 
diff --git a/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java b/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java
index 3dc43079ebad775f17d3a6380995eb2927def5c0..1276a8b4852a73ff126c96011e70e656005a311d 100644
--- a/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java
+++ b/src/main/java/plugins/fab/trackmanager/PluginTrackManagerProcessor.java
@@ -18,16 +18,15 @@
 
 package plugins.fab.trackmanager;
 
-import icy.gui.component.PopupPanel;
-import icy.gui.util.GuiUtil;
-import icy.plugin.abstract_.Plugin;
+import org.bioimageanalysis.icy.extension.plugin.abstract_.Plugin;
+import org.bioimageanalysis.icy.gui.GuiUtil;
+import org.bioimageanalysis.icy.gui.component.panel.PopupPanel;
 
 import javax.swing.*;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
 
 public abstract class PluginTrackManagerProcessor extends Plugin {
-
     /**
      * Panel used by inherited class to display data
      */
@@ -123,11 +122,11 @@ public abstract class PluginTrackManagerProcessor extends Plugin {
         return mainPanel;
     }
 
-    @Override
+    /*@Override
     protected void finalize() throws Throwable {
         trackPool = null;
         super.finalize();
-    }
+    }*/
 
     public final void setTrackPool(final TrackPool trackPool) {
         this.trackPool = trackPool;
diff --git a/src/main/java/plugins/fab/trackmanager/TrackDetection.java b/src/main/java/plugins/fab/trackmanager/TrackDetection.java
index 53694ff763c686fdc553ff1810be8225dbe562e5..0876f46f50b3666f47c718e16d0010bce9cad0da 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackDetection.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackDetection.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/TrackGroup.java b/src/main/java/plugins/fab/trackmanager/TrackGroup.java
index 1288b762109cf250acf4b43661fa6c1cb3371c90..e600bab523c88a3141ae3b65c3438c061e2ecfb1 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackGroup.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackGroup.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
@@ -18,7 +18,7 @@
 
 package plugins.fab.trackmanager;
 
-import icy.sequence.Sequence;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
 import plugins.nchenouard.spot.Detection;
 
 import java.util.ArrayList;
diff --git a/src/main/java/plugins/fab/trackmanager/TrackLengthDialog.java b/src/main/java/plugins/fab/trackmanager/TrackLengthDialog.java
index 93c690a123b2029cf20d8ee439e4011d084a8516..aeb940e798600a20f21bed9702e3587b2cbcfce6 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackLengthDialog.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackLengthDialog.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
@@ -18,8 +18,8 @@
 
 package plugins.fab.trackmanager;
 
-import icy.gui.dialog.ActionDialog;
-import icy.gui.util.GuiUtil;
+import org.bioimageanalysis.icy.gui.GuiUtil;
+import org.bioimageanalysis.icy.gui.dialog.ActionDialog;
 
 import javax.swing.*;
 import java.awt.event.ActionEvent;
@@ -31,7 +31,6 @@ public class TrackLengthDialog implements ActionListener {
     TrackPool trackPool;
 
     public TrackLengthDialog(final TrackPool trackPool) {
-
         this.trackPool = trackPool;
         final ActionDialog actionDialog = new ActionDialog("Select by length");
         actionDialog.getContentPane().setLayout(
diff --git a/src/main/java/plugins/fab/trackmanager/TrackManager.java b/src/main/java/plugins/fab/trackmanager/TrackManager.java
index 3c3616361e5b76b3cf564313700c0e42a97cbb01..29e10d78fa7ebc82056e3b0a0bae67a1cd91eb72 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackManager.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackManager.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
@@ -18,30 +18,31 @@
 
 package plugins.fab.trackmanager;
 
-import icy.file.FileUtil;
-import icy.gui.component.PopupPanel;
-import icy.gui.component.sequence.SequenceChooser;
-import icy.gui.dialog.MessageDialog;
-import icy.gui.frame.IcyFrame;
-import icy.gui.frame.IcyFrameEvent;
-import icy.gui.frame.IcyFrameListener;
-import icy.gui.frame.progress.AnnounceFrame;
-import icy.gui.util.ComponentUtil;
-import icy.gui.util.GuiUtil;
-import icy.gui.viewer.Viewer;
-import icy.main.Icy;
-import icy.network.NetworkUtil;
-import icy.plugin.PluginDescriptor;
-import icy.plugin.PluginLoader;
-import icy.plugin.abstract_.PluginActionable;
-import icy.resource.ResourceUtil;
-import icy.sequence.Sequence;
-import icy.swimmingPool.SwimmingObject;
-import icy.swimmingPool.SwimmingPoolEvent;
-import icy.swimmingPool.SwimmingPoolEventType;
-import icy.swimmingPool.SwimmingPoolListener;
-import icy.system.IcyExceptionHandler;
-import icy.util.XMLUtil;
+import org.bioimageanalysis.icy.Icy;
+import org.bioimageanalysis.icy.extension.plugin.PluginDescriptor;
+import org.bioimageanalysis.icy.extension.plugin.PluginLoader;
+import org.bioimageanalysis.icy.extension.plugin.abstract_.PluginActionable;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
+import org.bioimageanalysis.icy.gui.GuiUtil;
+import org.bioimageanalysis.icy.gui.component.ComponentUtil;
+import org.bioimageanalysis.icy.gui.component.panel.PopupPanel;
+import org.bioimageanalysis.icy.gui.dialog.MessageDialog;
+import org.bioimageanalysis.icy.gui.frame.IcyFrame;
+import org.bioimageanalysis.icy.gui.frame.IcyFrameEvent;
+import org.bioimageanalysis.icy.gui.frame.IcyFrameListener;
+import org.bioimageanalysis.icy.gui.frame.progress.AnnounceFrame;
+import org.bioimageanalysis.icy.gui.sequence.SequenceChooser;
+import org.bioimageanalysis.icy.gui.viewer.Viewer;
+import org.bioimageanalysis.icy.io.FileUtil;
+import org.bioimageanalysis.icy.io.xml.XMLUtil;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
+import org.bioimageanalysis.icy.model.swimmingPool.SwimmingObject;
+import org.bioimageanalysis.icy.model.swimmingPool.SwimmingPoolEvent;
+import org.bioimageanalysis.icy.model.swimmingPool.SwimmingPoolEventType;
+import org.bioimageanalysis.icy.model.swimmingPool.SwimmingPoolListener;
+import org.bioimageanalysis.icy.network.NetworkUtil;
+import org.bioimageanalysis.icy.system.IcyExceptionHandler;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import plugins.nchenouard.spot.Detection;
@@ -62,8 +63,9 @@ import java.util.prefs.Preferences;
 /**
  * @author Fabrice de Chaumont
  */
+@IcyPluginName("Track Manager")
+@IcyPluginIcon(path = "/track-manager.png")
 public class TrackManager extends PluginActionable implements AdjustmentListener, ActionListener, SwimmingPoolListener, IcyFrameListener {
-
     /*
      * List of active trackEditor shared between trackeditors (not used anymore)
      */
@@ -97,7 +99,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
 
     void loadTrackProcessor(final PluginDescriptor pluginDescriptor) {
 
-        if (pluginDescriptor== null || pluginDescriptor.getPluginClass() == null) {
+        if (pluginDescriptor == null || pluginDescriptor.getPluginClass() == null) {
             System.err.println("Can't load processor (plugin not found)");
             return;
         }
@@ -1174,7 +1176,7 @@ public class TrackManager extends PluginActionable implements AdjustmentListener
         for (final PluginDescriptor plugin : PluginLoader.getPlugins()) {
             if (plugin.isInstanceOf(PluginTrackManagerProcessor.class))
                 if (!plugin.isAbstract()) {
-                    final JMenuItem menuItem = new JMenuItem(plugin.getName(), ResourceUtil.scaleIcon(plugin.getIcon(), 24));
+                    final JMenuItem menuItem = new JMenuItem(plugin.getName(), new ImageIcon(plugin.getIcon().getImage().getScaledInstance(24, 24, Image.SCALE_SMOOTH)));
 
                     pluginPopupMenu.add(menuItem);
 
diff --git a/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java b/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java
index 003cd26b3ed56461bebc6493b0f302a4dbdd0196..16e38f370268f22b77e876bfe5a9570425c093ce 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackManagerPainter.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
@@ -18,14 +18,14 @@
 
 package plugins.fab.trackmanager;
 
-import icy.canvas.Canvas2D;
-import icy.canvas.IcyCanvas;
-import icy.painter.Overlay;
-import icy.sequence.Sequence;
-import icy.swimmingPool.SwimmingObject;
-import icy.type.point.Point5D;
-import icy.util.GraphicsUtil;
-import icy.util.ShapeUtil;
+import org.bioimageanalysis.icy.common.geom.point.Point5D;
+import org.bioimageanalysis.icy.common.geom.shape.ShapeUtil;
+import org.bioimageanalysis.icy.gui.GraphicsUtil;
+import org.bioimageanalysis.icy.gui.canvas.Canvas2D;
+import org.bioimageanalysis.icy.gui.canvas.IcyCanvas;
+import org.bioimageanalysis.icy.model.overlay.Overlay;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
+import org.bioimageanalysis.icy.model.swimmingPool.SwimmingObject;
 import plugins.nchenouard.spot.Detection;
 
 import java.awt.*;
@@ -371,7 +371,7 @@ public class TrackManagerPainter extends Overlay {
 
                         // line sections
                         if (detectionList.size() > 1) {
-                            Detection startDetection = detectionList.get(0);
+                            Detection startDetection = detectionList.getFirst();
 
                             for (int i = 1; i < ts.getDetectionList().size(); i++) {
                                 final Detection endDetection = detectionList.get(i);
diff --git a/src/main/java/plugins/fab/trackmanager/TrackManagerProcessorListener.java b/src/main/java/plugins/fab/trackmanager/TrackManagerProcessorListener.java
index 508939b61dda1fd19dc582e0b8f238ccae515902..7e771b2880164aff3ae205c17db3e2c48f739b8a 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackManagerProcessorListener.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackManagerProcessorListener.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/TrackPainterChangeEvent.java b/src/main/java/plugins/fab/trackmanager/TrackPainterChangeEvent.java
index 444eb074fde8287e2f029597f5fffe8d98108e1c..f9e65c18739e5947ab8ff09f0a461d1776d9df6b 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackPainterChangeEvent.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackPainterChangeEvent.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/TrackPainterListener.java b/src/main/java/plugins/fab/trackmanager/TrackPainterListener.java
index a80c2770b0d9ba1759967eb32a8e868da83f0799..12a62db09561393c43ab4755b77abe9d6cf0f339 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackPainterListener.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackPainterListener.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/TrackPanel.java b/src/main/java/plugins/fab/trackmanager/TrackPanel.java
index 5d85da9eae07df7a085262564ed9ceeaa5599202..40c0702aef6eb6d8ed31f519899ee8248e094a36 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackPanel.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackPanel.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
@@ -18,16 +18,16 @@
 
 package plugins.fab.trackmanager;
 
-import icy.gui.main.GlobalSequenceListener;
-import icy.gui.main.GlobalViewerListener;
-import icy.gui.viewer.Viewer;
-import icy.gui.viewer.ViewerEvent;
-import icy.gui.viewer.ViewerListener;
-import icy.main.Icy;
-import icy.painter.Overlay;
-import icy.sequence.DimensionId;
-import icy.sequence.Sequence;
-import icy.system.thread.ThreadUtil;
+import org.bioimageanalysis.icy.Icy;
+import org.bioimageanalysis.icy.gui.listener.GlobalSequenceListener;
+import org.bioimageanalysis.icy.gui.listener.GlobalViewerListener;
+import org.bioimageanalysis.icy.gui.viewer.Viewer;
+import org.bioimageanalysis.icy.gui.viewer.ViewerEvent;
+import org.bioimageanalysis.icy.gui.viewer.ViewerListener;
+import org.bioimageanalysis.icy.model.overlay.Overlay;
+import org.bioimageanalysis.icy.model.sequence.DimensionId;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
+import org.bioimageanalysis.icy.system.thread.ThreadUtil;
 import plugins.nchenouard.spot.Detection;
 
 import javax.swing.*;
@@ -47,8 +47,7 @@ import java.util.HashMap;
  *
  * @author Fabrice de Chaumont
  */
-public class TrackPanel extends JPanel implements MouseListener, MouseMotionListener, TrackPainterListener,
-        TrackManagerProcessorListener, ViewerListener, GlobalSequenceListener, GlobalViewerListener, Runnable {
+public class TrackPanel extends JPanel implements MouseListener, MouseMotionListener, TrackPainterListener, TrackManagerProcessorListener, ViewerListener, GlobalSequenceListener, GlobalViewerListener, Runnable {
 
     TimeCursor timeCursor = new TimeCursor();
 
diff --git a/src/main/java/plugins/fab/trackmanager/TrackPool.java b/src/main/java/plugins/fab/trackmanager/TrackPool.java
index 1daaf5e1b60d24fcf7083243f7acc1deb6e67888..879d3fd70941177eaac137b9a25ecc6fd7f85e9c 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackPool.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackPool.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
@@ -18,11 +18,11 @@
 
 package plugins.fab.trackmanager;
 
-import icy.gui.dialog.MessageDialog;
-import icy.gui.frame.progress.AnnounceFrame;
-import icy.main.Icy;
-import icy.sequence.Sequence;
-import icy.swimmingPool.SwimmingObject;
+import org.bioimageanalysis.icy.Icy;
+import org.bioimageanalysis.icy.gui.dialog.MessageDialog;
+import org.bioimageanalysis.icy.gui.frame.progress.AnnounceFrame;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
+import org.bioimageanalysis.icy.model.swimmingPool.SwimmingObject;
 import plugins.nchenouard.spot.Detection;
 
 import javax.swing.event.ChangeEvent;
diff --git a/src/main/java/plugins/fab/trackmanager/TrackSegment.java b/src/main/java/plugins/fab/trackmanager/TrackSegment.java
index 17e6d2e8245e06541dc3f6e80b1e800b2cab13b7..4afa5883be21e8ad914530251beaa33da3d7eb5f 100644
--- a/src/main/java/plugins/fab/trackmanager/TrackSegment.java
+++ b/src/main/java/plugins/fab/trackmanager/TrackSegment.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
@@ -18,7 +18,7 @@
 
 package plugins.fab.trackmanager;
 
-import icy.util.Random;
+import org.bioimageanalysis.icy.common.math.Random;
 import plugins.nchenouard.spot.Detection;
 
 import java.lang.ref.Reference;
@@ -206,7 +206,7 @@ public class TrackSegment implements Cloneable {
      * Add a detection in the segmentTrack
      */
     public void addDetection(final Detection detection) {
-        if (detectionList.size() > 0) {
+        if (!detectionList.isEmpty()) {
             final Detection detectionPrevious = getLastDetection();
             if (detection.getT() != detectionPrevious.getT() + 1) {
                 System.err.println(
@@ -316,10 +316,10 @@ public class TrackSegment implements Cloneable {
      * return last detection ( should be last in time too )
      */
     public Detection getLastDetection() {
-        if (detectionList.size() == 0)
+        if (detectionList.isEmpty())
             return null;
 
-        return detectionList.get(detectionList.size() - 1);
+        return detectionList.getLast();
     }
 
     /**
diff --git a/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java b/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java
index 2a3d239ef29a8029aeb5051e16b01972e0490fcd..9487a08237b2f3a30d63e1b736183a7e26127c84 100644
--- a/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.java
+++ b/src/main/java/plugins/fab/trackmanager/blocks/LoadTracksFromXML.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
@@ -18,9 +18,11 @@
 
 package plugins.fab.trackmanager.blocks;
 
-import icy.plugin.abstract_.Plugin;
-import icy.plugin.interface_.PluginBundled;
-import icy.plugin.interface_.PluginLibrary;
+import org.bioimageanalysis.icy.extension.plugin.abstract_.Plugin;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
+import org.bioimageanalysis.icy.extension.plugin.interface_.PluginBundled;
+import org.bioimageanalysis.icy.extension.plugin.interface_.PluginLibrary;
 import plugins.adufour.blocks.tools.roi.ROIBlock;
 import plugins.adufour.blocks.util.VarList;
 import plugins.adufour.vars.lang.Var;
@@ -37,6 +39,8 @@ import java.util.List;
  *
  * @author Stephane
  */
+@IcyPluginName("Load Tracks From XML")
+@IcyPluginIcon(path = "/track-manager.png")
 public class LoadTracksFromXML extends Plugin implements ROIBlock, PluginLibrary, PluginBundled {
     final VarMutable file = new VarMutable("XML file", null) {
         @Override
diff --git a/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java b/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java
index cc3d4ce82a7e244c5f33a159b324c8f1aaa16ebc..72cffb4cb4d1f82feb5318d769ffc995e6177f1d 100644
--- a/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.java
+++ b/src/main/java/plugins/fab/trackmanager/blocks/SaveTracksToXML.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
@@ -18,10 +18,12 @@
 
 package plugins.fab.trackmanager.blocks;
 
-import icy.plugin.abstract_.Plugin;
-import icy.plugin.interface_.PluginBundled;
-import icy.plugin.interface_.PluginLibrary;
-import icy.type.collection.CollectionUtil;
+import org.bioimageanalysis.icy.common.collection.CollectionUtil;
+import org.bioimageanalysis.icy.extension.plugin.abstract_.Plugin;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginIcon;
+import org.bioimageanalysis.icy.extension.plugin.annotation_.IcyPluginName;
+import org.bioimageanalysis.icy.extension.plugin.interface_.PluginBundled;
+import org.bioimageanalysis.icy.extension.plugin.interface_.PluginLibrary;
 import plugins.adufour.blocks.tools.roi.ROIBlock;
 import plugins.adufour.blocks.util.VarList;
 import plugins.adufour.vars.lang.Var;
@@ -36,6 +38,8 @@ import java.io.File;
  *
  * @author Stephane
  */
+@IcyPluginName("Save Tracks To XML")
+@IcyPluginIcon(path = "/track-manager.png")
 public class SaveTracksToXML extends Plugin implements ROIBlock, PluginLibrary, PluginBundled {
     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/track-manager.png
new file mode 100644
index 0000000000000000000000000000000000000000..ae9f4633300b549dee3b34c50b3573d2d5aeeea8
Binary files /dev/null and b/src/main/resources/track-manager.png differ