diff --git a/build.gradle b/build.gradle
index 3f68e943a6babee7b1516c28a1b3ac6e1e43964b..1ba2119d51559e1ba89f830d4617db40835ad151 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,4 +1,5 @@
 plugins {
+    id 'com.github.johnrengelman.shadow' version '8.1.1'
     id 'java'
     id 'application'
     id 'checkstyle'
@@ -6,15 +7,13 @@ plugins {
     id 'pmd'
     id "com.github.spotbugs" version "5.0.13"
     id 'org.openjfx.javafxplugin' version '0.1.0'
-    id 'org.beryx.jlink' version '2.26.0'
 }
 
 group 'fr.univ_amu'
-version '1.0-SNAPSHOT'
 
 javafx {
     version = "21"
-    modules = [ 'javafx.controls', 'javafx.fxml' ]
+    modules = [ 'javafx.controls']
 }
 
 checkstyle {
@@ -37,6 +36,7 @@ dependencies {
 test {
     finalizedBy jacocoTestReport // report is always generated after tests run
 }
+
 jacocoTestReport {
     dependsOn test // tests are required to run before generating the report
 }
@@ -46,15 +46,7 @@ test {
 }
 
 application {
-    mainClass = 'sample.App'
-}
-
-tasks.named('jar') {
-    manifest {
-        attributes('Implementation-Title': project.name,
-                'Implementation-Version': project.version,
-                'main-Class': application.mainClass )
-    }
+    mainClass = 'sample.Main'
 }
 
 spotbugs {
@@ -74,6 +66,14 @@ spotbugsMain {
     }
 }
 
+jar {
+    manifest {
+        attributes("Implementation-Title": project.name,
+                "Implementation-Version": version,
+                "Main-Class": application.mainClass)
+    }
+}
+
 spotbugsTest {
     reports {
         html {
diff --git a/src/main/java/module-info.java b/src/main/java/module-info.java
new file mode 100644
index 0000000000000000000000000000000000000000..fc8b32ee037f65c60c5a5480518cf554dbde6140
--- /dev/null
+++ b/src/main/java/module-info.java
@@ -0,0 +1,5 @@
+module sample {
+  requires javafx.controls;
+
+  exports sample;
+}
\ No newline at end of file
diff --git a/src/main/java/sample/Main.java b/src/main/java/sample/Main.java
new file mode 100644
index 0000000000000000000000000000000000000000..9971769db82306a10fced7565cb4c61f856f9bf0
--- /dev/null
+++ b/src/main/java/sample/Main.java
@@ -0,0 +1,7 @@
+package sample;
+
+public class Main {
+  public static void main(String[] args){
+    MyApplication.main(args);
+  }
+}
diff --git a/src/main/java/sample/App.java b/src/main/java/sample/MyApplication.java
similarity index 93%
rename from src/main/java/sample/App.java
rename to src/main/java/sample/MyApplication.java
index 1bcd9be25d10d84aefcb22e2bb64fc7c6c64513d..6e613a15c475d443bc09944c7a9ffe7fb9cfea87 100644
--- a/src/main/java/sample/App.java
+++ b/src/main/java/sample/MyApplication.java
@@ -1,5 +1,4 @@
 package sample;
-import javafx.application.Application;
 import javafx.scene.Group;
 import javafx.scene.Scene;
 import javafx.scene.image.Image;
@@ -7,7 +6,7 @@ import javafx.scene.image.ImageView;
 import javafx.stage.Stage;
 
 
-public class App extends Application {
+public class MyApplication extends javafx.application.Application {
 
   @Override
   public void start(Stage stage) {