diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java
index e06b279352eca1947fe1efdbe9baf2c59afc58c8..d566bcba0a43683e62006819d52226ed10b85d34 100644
--- a/src/main/java/engine/Kernel.java
+++ b/src/main/java/engine/Kernel.java
@@ -22,6 +22,8 @@ public class Kernel {
     SoundEngine soundEngine =new SoundEngine();
     public static boolean isCollision = false;
 
+    public int isFirstUpdate = 0;
+
 
     //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>();
 
@@ -57,13 +59,16 @@ public class Kernel {
      */
     public void start() throws IOException {
         graphicEngine.start();
+
     }
 
     public void restart() throws IOException {
+
         for (Engine engine: engines
              ) {
             engine.restart();
         }
+        isFirstUpdate = 0;
         //pongObjectEntityHashMap = physicEngine.pongObjectEntityHashMap;
     }
 
@@ -72,11 +77,20 @@ public class Kernel {
      * One step of the game. Update all objects positions and repaint the grid.
      */
     public void update() {
-
+        //System.out.println(gameObjects.get(0).getInitPosition().getX() + " " + gameObjects.get(2).getInitPosition().getY());
+        if(isFirstUpdate == 1){
+            try {
+                Thread.sleep(1000);
+                //isFirstUpdate = false;
+            } catch (InterruptedException e) {
+                throw new RuntimeException(e);
+            }
+        }
         for (Engine engine: engines
              ) {
             engine.update();
         }
+        isFirstUpdate++;
 
     }
 
diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java
index e0f2234f6b3aa3ee87b3a101d070c694eda6bc6c..63ee86879ed6fc122986df2415e6fa05ff072f03 100644
--- a/src/main/java/engine/physic/PhysicEngine.java
+++ b/src/main/java/engine/physic/PhysicEngine.java
@@ -10,20 +10,11 @@ import java.util.Random;
 public class PhysicEngine implements Engine {
 
     int i = 0;
-    public HashMap<PongObject, Entity> pongObjectEntityHashMap = new HashMap<>();
+    public HashMap<PongObject, Entity> pongObjectEntityHashMap; // Map of the pong objects and their associated entity
 
-    private HashMap<Coordinates2D, PongObject> positions = new HashMap<>();
+    //private HashMap<Coordinates2D, PongObject> positions; // Map of the positions and the associated pong object
     public PhysicEngine(){
-        for (PongObject pongObject: Kernel.gameObjects) {
-            Coordinates2D speed = new Coordinates2D(0, 0);
-            if(pongObject.getName().equals("Ball")){
-                speed = new Coordinates2D(2, 2);
-            }
-            //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1);
-            pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight()));
-            positions.put(pongObject.getPosition(), pongObject);
-
-        }
+        restart();
     }
     @Override
     public void update(){
@@ -31,6 +22,8 @@ public class PhysicEngine implements Engine {
             Coordinates2D previousPosition = pongObjectEntityHashMap.get(pongObject).getPosition();
             pongObjectEntityHashMap.get(pongObject).updatePosition();// Updating of the associated movable position
             if(pongObject.getName().equals("Ball")){
+                System.out.println("Ball position: " + pongObjectEntityHashMap.get(pongObject).getPosition().getX() + " ; " + pongObjectEntityHashMap.get(pongObject).getPosition().getY());
+                //System.out.println("Ball init position: " + pongObjectEntityHashMap.get(pongObject).getInitPosition());
                 for (PongObject po2: pongObjectEntityHashMap.keySet()
                 ) {
                     if(!po2.getName().equals("Ball")){
@@ -60,15 +53,16 @@ public class PhysicEngine implements Engine {
 
     @Override
     public void restart() {
-        //pongObjectEntityHashMap = new HashMap<>();
+        pongObjectEntityHashMap = new HashMap<>();
+        //positions = new HashMap<>();
         for (PongObject pongObject: Kernel.gameObjects) {
             Coordinates2D speed = new Coordinates2D(0, 0);
             if(pongObject.getName().equals("Ball")){
+                //pongObject.setPosition(pongObject.getInitPosition());
                 speed = new Coordinates2D(2, 2);
             }
             //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1);
             pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight()));
-            positions.put(pongObject.getPosition(), pongObject);
 
         }
     }
diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java
index e6e563e53b3c16685eb5bfdbe35df28ccbd4e399..06a0ea2bdeef0b27ed9a3dad484e17fcddf4f16f 100644
--- a/src/main/java/pong/PongApp.java
+++ b/src/main/java/pong/PongApp.java
@@ -51,6 +51,8 @@ public class PongApp {
             score2 = 0;
             System.out.println("Restarting");
             try {
+                restart();
+                //kernel.setGameObject(components);
                 kernel.restart();
             } catch (IOException ex) {
                 throw new RuntimeException(ex);
@@ -69,7 +71,7 @@ public class PongApp {
             if(isGoal){
                 System.out.println(score1 + " : " + score2);
                 restart();
-                kernel.setGameObject(components);
+                //kernel.setGameObject(components);
                 kernel.restart();
             }
 
diff --git a/src/main/java/pong/PongBall.java b/src/main/java/pong/PongBall.java
index 673469c4c2a69dae5293ff1e78676125f2560829..12f7ab5bfee3f9efce05e39fd2622fe727262428 100644
--- a/src/main/java/pong/PongBall.java
+++ b/src/main/java/pong/PongBall.java
@@ -10,7 +10,7 @@ public class PongBall implements PongObject {
     private final int width;
     private final int height;
     private Coordinates2D position;
-    private final Coordinates2D initPosition;
+    private Coordinates2D initPosition;
     private final Image image;
 
     PongBall(String name, String imagePath, Coordinates2D position, int width, int height){
@@ -60,6 +60,6 @@ public class PongBall implements PongObject {
 
     @Override
     public Coordinates2D getInitPosition() {
-        return initPosition;
+        return this.initPosition;
     }
 }