diff --git a/src/main/java/sma/SEIRS_SMA.java b/src/main/java/sma/SEIRS_SMA.java
index 4dac58ec9365e7c1275e210671aaad2e44a046e6..86216b54e1f0ca3e99dddec8142fce9f6ea73854 100644
--- a/src/main/java/sma/SEIRS_SMA.java
+++ b/src/main/java/sma/SEIRS_SMA.java
@@ -34,17 +34,18 @@ public class SEIRS_SMA implements SMA{
     private StatisticsCanvas statisticsCanvas;
     private DisplaySquaredEnvironment display;
     private Random r;
+    private FrameBuilder fb = new FrameBuilder();
 
     private HashMap<String,Integer> stats;
 
     private void initGraphics() {
-        statisticsCanvas = new StatisticsCanvas(500,500);
+        statisticsCanvas = new StatisticsCanvas(300,parameters.getSize());
         display = new DisplaySquaredEnvironment(environment,agents);
-        FrameBuilder frameBuilder = new FrameBuilder();
 
-        frameBuilder.addComponent(display,FrameBuilder.TOP);
-        frameBuilder.addComponent(statisticsCanvas,FrameBuilder.RIGHT);
-        frameBuilder.buildWindow();
+        fb.setSimulationCanvas(display);
+        fb.setStatsCanvas(statisticsCanvas);
+
+        fb.buildWindow();
         statisticsCanvas.updateValues(environment.getAgentsStatus());
         statisticsCanvas.repaint();
     }
diff --git a/src/main/java/utils/Pair.java b/src/main/java/utils/Pair.java
deleted file mode 100644
index f204cf8de8fbcbb28aeb8eb0586361a43ca36864..0000000000000000000000000000000000000000
--- a/src/main/java/utils/Pair.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package utils;
-
-public record Pair<A, B>(A first, B second) {
-
-    public int hashCode() {
-        int hashFirst = first != null ? first.hashCode() : 0;
-        int hashSecond = second != null ? second.hashCode() : 0;
-
-        return (hashFirst + hashSecond) * hashSecond + hashFirst;
-    }
-
-    public boolean equals(Object other) {
-        if (other instanceof Pair otherPair) {
-            return
-                    ((this.first == otherPair.first ||
-                            (this.first != null && otherPair.first != null &&
-                                    this.first.equals(otherPair.first))) &&
-                            (this.second == otherPair.second ||
-                                    (this.second != null && otherPair.second != null &&
-                                            this.second.equals(otherPair.second))));
-        }
-
-        return false;
-    }
-
-    public String toString() {
-        return "(" + first + ", " + second + ")";
-    }
-
-    public A getFirst() {
-        return first;
-    }
-
-    public B getSecond() {
-        return second;
-    }
-}
diff --git a/src/main/java/view/FrameBuilder.java b/src/main/java/view/FrameBuilder.java
index e2ee26674535c1df2308203facc3306ad36e180a..53a726b2f904dbc7948d61d45838fed947cb8415 100644
--- a/src/main/java/view/FrameBuilder.java
+++ b/src/main/java/view/FrameBuilder.java
@@ -1,68 +1,53 @@
 package view;
 
-import utils.Pair;
-
 import javax.swing.*;
 import java.awt.*;
-import java.util.ArrayList;
-import java.util.List;
 
 public class FrameBuilder {
 
-    public final static int LEFT = 0;
-    public final static int RIGHT = 1;
-    public final static int TOP = 2;
-    public final static int BOTTOM = 3;
-
-    private int windowWidth = 0;
-    private int windowHeight = 0;
-
-    private List<Pair<JComponent,Integer>> components;
+    private JPanel simulation;
+    private JPanel stats;
 
     public FrameBuilder() {
         resetWindow();
     }
 
     public void resetWindow() {
-        components = new ArrayList<>();
+        simulation = null;
+        stats = null;
     }
 
+    public void setSimulationCanvas(JPanel canvas) {
+        this.simulation = canvas;
+    }
 
-    public void addComponent(JComponent c,int p) {
-        var pair = new Pair<>(c,p);
+    public void setStatsCanvas(JPanel canvas) {
+        this.stats = canvas;
+    }
+
+    public void buildWindow() {
 
-        switch (p) {
-            case LEFT,RIGHT -> {
-                windowWidth+=c.getWidth();
-                if (c.getHeight()>windowHeight)
-                    windowHeight = c.getHeight();
-            }
-            case TOP,BOTTOM -> {
-                windowHeight+=c.getHeight();
-                if (c.getWidth()>windowWidth)
-                    windowWidth = c.getWidth();
-            }
+        if (simulation == null || stats == null) {
+            throw new IllegalStateException("Cannot create windows : one of the canvas is not initialized.");
         }
 
-        components.add(pair);
-    }
+        Dimension screenDimension = Toolkit.getDefaultToolkit().getScreenSize();
+
+        if (simulation.getWidth()+stats.getWidth() > screenDimension.getWidth() ||
+                simulation.getHeight() > screenDimension.getHeight()) {
+            System.err.println("WARNING : screen size is smaller than the simulation window. The simulation will " +
+                    "still work but won't display properly.");
+        }
 
-    public void buildWindow() {
         JFrame frame = new JFrame();
-        frame.setLayout(new java.awt.GridLayout());
+        JSplitPane panel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, simulation, stats);
+        panel.setDividerLocation(simulation.getWidth());
+        panel.setDividerSize(0);
+        frame.setSize(simulation.getWidth()+stats.getWidth(),simulation.getHeight());
+        frame.getContentPane().add(panel);
         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
-
-        for (Pair<JComponent,Integer> pair : components ) {
-            switch (pair.getSecond()) {
-                case TOP -> frame.add(pair.getFirst(),BorderLayout.NORTH);
-                case BOTTOM -> frame.add(pair.getFirst(),BorderLayout.SOUTH);
-                case LEFT -> frame.add(pair.getFirst(),BorderLayout.WEST);
-                case RIGHT -> frame.add(pair.getFirst(),BorderLayout.EAST);
-                default -> throw new IllegalStateException("Wrong position value");
-            }
-        }
-        frame.setSize(windowWidth,windowHeight);
         frame.setResizable(false);
+
         frame.setVisible(true);
     }
 }
diff --git a/src/main/java/view/StatisticsCanvas.java b/src/main/java/view/StatisticsCanvas.java
index 78a8ee0c8b7fb03668e9bb8d95a2705d46d90565..0aff6b279c5e080d8a4003e4d79de2acb39a51f9 100644
--- a/src/main/java/view/StatisticsCanvas.java
+++ b/src/main/java/view/StatisticsCanvas.java
@@ -9,15 +9,11 @@ import java.util.HashMap;
 
 public class StatisticsCanvas extends JPanel {
 
-    private final int canvasWidth;
-    private final int canvasHeight;
     private HashMap<String,Integer> values;
     private final int total;
 
     public StatisticsCanvas(int width,int height) {
         this.setDoubleBuffered(false);
-        canvasHeight = height;
-        canvasWidth = width;
         values = new HashMap<>();
         total = YamlReader.getParams().getPopulation();
         setSize(width, height);
@@ -43,15 +39,14 @@ public class StatisticsCanvas extends JPanel {
         int start = 0;
         g.clearRect(0,0,getWidth(),getHeight());
         for (int i=0 ; i <values.keySet().size();i++) {
-            String state = (String) values.keySet().toArray()[i];
+            String state = values.keySet().toArray()[i].toString();
             int value = values.get(state);
             g.setColor(stringToColor(state));
-            float height = ((float)value/total)*canvasHeight;
-            g.fillRect(10,start,canvasWidth/4,start+(int)height);
+            float height = ((float)value/total)*getHeight();
+            g.fillRect(10,start,getWidth()/4,start+(int)height);
             start +=height;
             g.setColor(Color.BLACK);
-            g.drawString(state + " : "+value,canvasWidth/2,canvasHeight/values.keySet().size()*(1+i)-100);
+            g.drawString(state + " : "+value,getWidth()/2,getHeight()/values.keySet().size()*(1+i)-100);
         }
-
     }
 }
diff --git a/src/main/resources/output.png b/src/main/resources/output.png
index 004aa96b5e62e1af6815f0f962db7eb37d0d515e..9e9ed57bd7f7b957f9c77d2d984f237a29fcfc28 100644
Binary files a/src/main/resources/output.png and b/src/main/resources/output.png differ
diff --git a/src/main/resources/parameters.yaml b/src/main/resources/parameters.yaml
index 241988b53dbb854417d77388cfe81fbffc2dacbd..d85b817cdad88272de26dcc0a419caea7b75f634 100644
--- a/src/main/resources/parameters.yaml
+++ b/src/main/resources/parameters.yaml
@@ -1,13 +1,13 @@
-graphicalMode: false
+graphicalMode: true
 incubationRate: 0.3
-infectionRate: 0.2
-looseImmunityRate: 0.09
-recoveryRate: 0.6
-nbOfCycles: 300
-nbOfPatientZero: 10
-population: 5000
+infectionRate: 0.75
+looseImmunityRate: 0.008
+recoveryRate: 0.1429
+nbOfCycles: 2000
+nbOfPatientZero: 1
+population: 3000
 seed: 120
-size: 500
-synchronousMode: true
+size: 1000
+synchronousMode: false
 timeBetweenCycles: 0
-infectionStacks : false
\ No newline at end of file
+infectionStacks : true
\ No newline at end of file