diff --git a/.gitignore b/.gitignore
index a82d509f0e3ac6817ff867fddb41bc3a42382c5a..57f16fb67c1b1589981416b323d7a9debc728665 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,41 @@
-.idea/
+/build*
+/workspace
+setting.xml
+release/
 target/
-.settings/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+icy.log
+
+### IntelliJ IDEA ###
+.idea/
+*.iws
 *.iml
-.project
+*.ipr
+
+### Eclipse ###
+.apt_generated
 .classpath
-export.jardesc
-**/.DS_Store
\ No newline at end of file
+.factorypath
+.project
+.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 61a58cf8dc9130da00dfc48ee6daa3b8c9243ea7..f03f7adf093b794a1325b97ade6f77b34cc1132c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,14 +8,12 @@
     <parent>
         <groupId>org.bioimageanalysis.icy</groupId>
         <artifactId>pom-icy</artifactId>
-        <version>2.2.0</version>
+        <version>3.0.0-a.1</version>
     </parent>
 
     <!-- Project Information -->
     <artifactId>3d-spheres-vtk</artifactId>
-    <version>2.0.0</version>
-
-    <packaging>jar</packaging>
+    <version>2.0.0-a.1</version>
 
     <name>Draw 3D Spheres with VTK.</name>
     <description>
@@ -71,9 +69,8 @@
     <dependencies>
         <dependency>
             <groupId>org.bioimageanalysis.icy</groupId>
-            <artifactId>icy-vtk</artifactId>
+            <artifactId>ezplug</artifactId>
         </dependency>
-
         <dependency>
             <groupId>org.bioimageanalysis.icy</groupId>
             <artifactId>protocols</artifactId>
@@ -84,8 +81,7 @@
     <repositories>
         <repository>
             <id>icy</id>
-            <name>Icy's Nexus</name>
-            <url>https://icy-nexus.pasteur.fr/repository/Icy/</url>
+            <url>https://nexus-icy.pasteur.cloud/repository/icy/</url>
         </repository>
     </repositories>
 </project>
diff --git a/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.java b/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.java
index b20e0efcd68fc541e42f8f2b3d4080da1f241cc9..67973a9804683087a76aaa3c22f30a140126c490 100644
--- a/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.java
+++ b/src/main/java/plugins/lagache/spherevtk/DrawSpheresVTK.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,10 @@
 
 package plugins.lagache.spherevtk;
 
-import icy.plugin.abstract_.Plugin;
+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.jetbrains.annotations.NotNull;
 import plugins.adufour.blocks.lang.Block;
 import plugins.adufour.blocks.util.VarList;
 import plugins.adufour.vars.lang.*;
@@ -28,8 +31,9 @@ import java.awt.*;
 /**
  * Colocalisation with Ripley function K Significant
  */
+@IcyPluginName("Draw Spheres VTK")
+@IcyPluginIcon(path = "/3d-spheres-vtk.png")
 public class DrawSpheresVTK extends Plugin implements Block {
-
     VarSequence input_sequence = new VarSequence("Input sequence", null);
     VarDoubleArrayNative x = new VarDoubleArrayNative("x", null);
     VarDoubleArrayNative y = new VarDoubleArrayNative("y", null);
@@ -39,8 +43,7 @@ public class DrawSpheresVTK extends Plugin implements Block {
     VarDouble size = new VarDouble("Size", 1.0);
 
     @Override
-    public void declareInput(final VarList inputMap) {
-
+    public void declareInput(final @NotNull VarList inputMap) {
         inputMap.add("Input Sequence", input_sequence);
         inputMap.add("x", x);
         inputMap.add("y", y);
@@ -56,13 +59,7 @@ public class DrawSpheresVTK extends Plugin implements Block {
 
     @Override
     public void run() {
-
         // Add the cross overlay, it becomes active after being added.
         input_sequence.getValue().addOverlay(new SphereVTK(x.getValue(), y.getValue(), z.getValue(), size.getValue(), color.getValue(), name.getValue()));
     }
-
 }
-		
-	
-
-	
\ No newline at end of file
diff --git a/src/main/java/plugins/lagache/spherevtk/SphereVTK.java b/src/main/java/plugins/lagache/spherevtk/SphereVTK.java
index 639a95a20ace5baf1465b644629e705a798596ab..b091f6a25ccd2a8bbf898981412b83ed605a88aa 100644
--- a/src/main/java/plugins/lagache/spherevtk/SphereVTK.java
+++ b/src/main/java/plugins/lagache/spherevtk/SphereVTK.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,17 +18,17 @@
 
 package plugins.lagache.spherevtk;
 
-import icy.canvas.IcyCanvas;
-import icy.painter.Overlay;
-import icy.painter.VtkPainter;
-import icy.sequence.Sequence;
-import plugins.kernel.canvas.VtkCanvas;
+import org.bioimageanalysis.icy.gui.canvas.IcyCanvas;
+import org.bioimageanalysis.icy.gui.canvas.VtkCanvas;
+import org.bioimageanalysis.icy.model.overlay.Overlay;
+import org.bioimageanalysis.icy.model.overlay.VtkPainter;
+import org.bioimageanalysis.icy.model.sequence.Sequence;
 import vtk.*;
 
 import java.awt.*;
 
 /**
- * @author stephane
+ * @author Stephane Dallongeville
  */
 public class SphereVTK extends Overlay implements VtkPainter {
     double[] x, y, z;
diff --git a/src/main/resources/3d-spheres-vtk.png b/src/main/resources/3d-spheres-vtk.png
new file mode 100644
index 0000000000000000000000000000000000000000..82d017bfb74869f405307890198e38bdf77cc94b
Binary files /dev/null and b/src/main/resources/3d-spheres-vtk.png differ