diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java
index 1b6333a2c0a657beb9dbb281912e7dcdaf5902a7..04268859f7fe5c548e75ce21e38ed07c34608bcf 100644
--- a/src/main/java/engine/Kernel.java
+++ b/src/main/java/engine/Kernel.java
@@ -34,6 +34,7 @@ public class Kernel {
 
         this.graphicEngine = new GraphicEngine(); // Will create a new grid and a new kernel
         graphicEngine.init(gameName, width, height); // Will start the kernel and set the keys listeners
+        graphicEngine.drawRect();
 
         engines.add(this.graphicEngine);//
         this.physicEngine = new PhysicEngine();
@@ -82,14 +83,25 @@ public class Kernel {
             public void keyPressed(java.awt.event.KeyEvent evt) {
                 switch (evt.getKeyCode()) {
                     case java.awt.event.KeyEvent.VK_UP -> {
-                        physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, -1));                    }
+                        physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, -3));                    }
                     case java.awt.event.KeyEvent.VK_DOWN -> {
-                        pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 1));
+                        pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 3));
                     }
                     case java.awt.event.KeyEvent.VK_Z -> {
-                        pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, -1));                    }
+                        pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, -3));                    }
                     case java.awt.event.KeyEvent.VK_S -> {
-                        pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 1));
+                        pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 3));
+                    }
+                }
+            }
+
+            public void keyReleased(java.awt.event.KeyEvent evt) {
+                switch (evt.getKeyCode()) {
+                    case java.awt.event.KeyEvent.VK_UP, java.awt.event.KeyEvent.VK_DOWN -> {
+                        pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 0));
+                    }
+                    case java.awt.event.KeyEvent.VK_Z, java.awt.event.KeyEvent.VK_S -> {
+                        pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 0));
                     }
                 }
             }
diff --git a/src/main/java/engine/Sound.java b/src/main/java/engine/Sound.java
index b71382f2515908225f72dc0e44509902a5120fda..c3ddf0b89bf53cb36739e921389bf2deecc427db 100644
--- a/src/main/java/engine/Sound.java
+++ b/src/main/java/engine/Sound.java
@@ -6,7 +6,7 @@ import javax.sound.sampled.AudioSystem;
 import javax.sound.sampled.Clip;
 
 public class Sound {
-    public static void PLaymusic(String location){
+    public static void playMusic(String location){
         try {
             File musicPath = new File(location);
             if (musicPath.exists()) {
diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java
index f78e8cb320cb71b68b4cf57da1a1a56484b0e2f8..ae3fed1457d35a8984e902329feaab0a7b538c68 100644
--- a/src/main/java/engine/graphic/GraphicEngine.java
+++ b/src/main/java/engine/graphic/GraphicEngine.java
@@ -2,6 +2,7 @@ package engine.graphic;
 
 import engine.Engine;
 import engine.Kernel;
+import pong.PongApp;
 import pong.PongObject;
 
 import javax.swing.*;
@@ -20,12 +21,18 @@ public class GraphicEngine extends JFrame implements Engine {
         this.setMinimumSize(new Dimension(width, height));
         // this.setContentPane(mainPanel);
         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+        this.getContentPane().setBackground(Color.BLACK);
+
+        //this.getContentPane().getGraphics().setColor(Color.BLACK);
+        //this.getContentPane().getGraphics().fillRect(0, 0, width, height);
+        //this.setMenuBar(null);
         this.setLocationRelativeTo(null);
         this.pack();
         this.setResizable(false);
         this.setVisible(true);
         this.setLayout(this.getLayout());
         this.revalidate();
+        this.repaint();
     }
     public void draw(ImageComponent ic) throws IOException {
         getContentPane().add(ic);
@@ -45,5 +52,9 @@ public class GraphicEngine extends JFrame implements Engine {
         revalidate();
     }
 
+    public void drawRect(){
+        this.getContentPane().add(new RectangleComponent(100, 100, PongApp.rectWidth, PongApp.rectHeight));
+    }
+
 
 }
diff --git a/src/main/java/engine/graphic/ImageComponent.java b/src/main/java/engine/graphic/ImageComponent.java
index fd98476789479191748199fd9fc1038b046f7187..2f57f83cd490cccec4d2d9d387289ee8769011f4 100644
--- a/src/main/java/engine/graphic/ImageComponent.java
+++ b/src/main/java/engine/graphic/ImageComponent.java
@@ -1,6 +1,7 @@
 package engine.graphic;
 
 import engine.physic.Coordinates2D;
+import pong.PongApp;
 
 import javax.swing.*;
 import java.awt.*;
@@ -18,7 +19,7 @@ public class ImageComponent extends JComponent {
         this.image = image;
         this.position = position;
         //this.setBorder(BorderFactory.createLineBorder(Color.black));
-        this.setSize(850, 500);
+        this.setSize(PongApp.width + 20, PongApp.height + 100);
         this.setVisible(true);
         this.setLayout(null);
         //repaint();
@@ -35,6 +36,7 @@ public class ImageComponent extends JComponent {
     @Override
     protected void paintComponent(Graphics g) {
         super.paintComponent(g);
+
         g.drawImage(image, position.getX(), position.getY(), this.width, this.height, this);
         //setOpaque(false);
     }
diff --git a/src/main/java/engine/graphic/RectangleComponent.java b/src/main/java/engine/graphic/RectangleComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..5a823103024bcc2832fd8a2b46b716b25e729e5d
--- /dev/null
+++ b/src/main/java/engine/graphic/RectangleComponent.java
@@ -0,0 +1,30 @@
+package engine.graphic;
+
+import pong.PongApp;
+
+import javax.swing.*;
+
+public class RectangleComponent extends JComponent {
+    private int width;
+    private int height;
+
+    private int x;
+    private int y;
+
+    public RectangleComponent(int x, int y, int width, int height) {
+        this.width = width;
+        this.height = height;
+        this.x = x;
+        this.y = y;
+        this.setSize(PongApp.width, PongApp.height);
+        this.setVisible(true);
+        this.setLayout(null);
+    }
+
+    @Override
+    protected void paintComponent(java.awt.Graphics g) {
+        super.paintComponent(g);
+        g.setColor(java.awt.Color.WHITE);
+        g.drawRect(this.x, this.y, this.width, this.height);
+    }
+}
diff --git a/src/main/java/engine/physic/Movable.java b/src/main/java/engine/physic/Movable.java
index b62d88a86e2f5ccb856773fcfd62dd27f5376c28..7e841ddd9b5b5095109b615d616eae2b1b2bdcd0 100644
--- a/src/main/java/engine/physic/Movable.java
+++ b/src/main/java/engine/physic/Movable.java
@@ -60,12 +60,12 @@ public class Movable implements Entity {
     @Override
     public void updatePosition() {
         Coordinates2D newPosition = new Coordinates2D(this.position.getX(), this.position.getY());
-        newPosition.add(this.speed);
+        newPosition.add(this.speed); // Calculating the new position
 
-        if (newPosition.getX() < 0 || newPosition.getX() >= PongApp.width - this.width) {
+        if (newPosition.getX() <= 100 || newPosition.getX() >= PongApp.rectWidth - this.width + 100) {
             this.speed = new Coordinates2D(-speed.getX(), speed.getY());
         }
-        if (newPosition.getY() < 0 || newPosition.getY() >= PongApp.height - this.height -20) { // -20 à cause de la barre verticale de la fenêtre
+        if (newPosition.getY() <= 100 || newPosition.getY() >= PongApp.rectHeight - this.height + 100) { // -20 à cause de la barre verticale de la fenêtre
             this.speed = new Coordinates2D(speed.getX(), -speed.getY());
         }
         this.position.add(this.speed); // Modifying the position (x = x + vx ; y = y + vy)
diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java
index 82cfeebe7551b549677a259ec5623ca90e1a35e5..4d4cec73f722194347e4bbdce8a95283e92c7126 100644
--- a/src/main/java/engine/physic/PhysicEngine.java
+++ b/src/main/java/engine/physic/PhysicEngine.java
@@ -3,10 +3,10 @@ package engine.physic;
 import engine.Engine;
 import engine.Kernel;
 import engine.Sound;
-import pong.PongApp;
 import pong.PongObject;
 
 import java.util.HashMap;
+import java.util.Random;
 
 public class PhysicEngine implements Engine {
 
@@ -38,10 +38,16 @@ public class PhysicEngine implements Engine {
                         if(checkCollision(pongObjectEntityHashMap.get(pongObject), pongObjectEntityHashMap.get(po2))){
                             i++;
                             String collisionPath = "src/main/resources/Sound/collision.wav";
-                            Sound.PLaymusic(collisionPath);
+                            Sound.playMusic(collisionPath);
                             System.out.println("Collision " + i);
                             pongObjectEntityHashMap.get(pongObject).setPosition(previousPosition);
+                            if(i % 2 == 0){
+                                pongObjectEntityHashMap.get(pongObject).getSpeed().add(new Coordinates2D(1, 1));
+                            }
+
                             pongObjectEntityHashMap.get(pongObject).getSpeed().mul(-1);
+                            //TODO: implements pong object collision physics
+
                             pongObjectEntityHashMap.get(pongObject).updatePosition();
                         }
                     }
diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java
index 5d71dbf8fbb7aed389a30f43a3d64a901276e1a5..c87c3ab0bd30db64f18498befdad416ed974b065 100644
--- a/src/main/java/pong/PongApp.java
+++ b/src/main/java/pong/PongApp.java
@@ -11,24 +11,36 @@ import java.util.ArrayList;
 public class PongApp {
 
     public static ArrayList<PongObject> components = new ArrayList<PongObject>();
-    public static int width = 850;
-    public static int height = 500;
+    public static int width = 1000;
+    public static int height = 800;
+
+    public static int widthDiff = 100;
+    public static int heightDiff = 100;
+    public static int rectWidth = width - widthDiff*2;
+    public static int rectHeight = height - heightDiff*2;
 
     public PongApp() throws IOException {
 
     }
 
     public static void main(String[] args) throws IOException {
+
+        int racketWidth = 30;
+        int racketHeight = 120;
+
+        int ballWidth = 32;
+
         String son = "src/main/resources/Sound/son.wav";
-        Sound.PLaymusic(son);
-        PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette1.png", new Coordinates2D(5, 100), 30, 120);
+        Sound.playMusic(son);
+        PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette.png", new Coordinates2D(widthDiff + 5, 100), racketWidth, racketHeight);
         components.add(leftRacket);
 
-        PongRacket rightRacket = new PongRacket("Right racket", "src/main/resources/pong/raquette2.png", new Coordinates2D(815, 100), 30, 120);
+        PongRacket rightRacket = new PongRacket("Right racket", "src/main/resources/pong/raquette.png", new Coordinates2D(rectWidth + widthDiff - 5 - racketWidth, 100), racketWidth, racketHeight);
         components.add(rightRacket);
 
         // TODO: Add rackets
-        PongBall pongBall = new PongBall("Ball", "src/main/resources/sprint2_demo/asteroid.png", new Coordinates2D(100, 10), 64, 64);
+        //PongBall pongBall = new PongBall("Ball", "src/main/resources/pong/ball.png", new Coordinates2D(width/2, height/2), ballWidth, ballWidth);
+        PongBall pongBall = new PongBall("Ball", "src/main/resources/sprint2_demo/asteroid.png", new Coordinates2D(width/2, height/2), ballWidth, ballWidth);
         components.add(pongBall);
 
         Kernel kernel = new Kernel("Pong", width, height, components);
diff --git a/src/main/resources/pong/ball.png b/src/main/resources/pong/ball.png
index d222eabe97d84d3fd4783abe89ce21e70481c92f..882736824c12bfafb45c18ca0931366171a18741 100644
Binary files a/src/main/resources/pong/ball.png and b/src/main/resources/pong/ball.png differ