diff --git a/src/example/philosophes/MainPhilosophe.java b/src/example/philosophes/MainPhilosophe.java
index 03fed1cd55d6bbc8785599917601fae80c17c5da..3f3558173b1e128eca3b42b50ca39f1fd203761e 100644
--- a/src/example/philosophes/MainPhilosophe.java
+++ b/src/example/philosophes/MainPhilosophe.java
@@ -1,7 +1,6 @@
 package example.philosophes;
 
 import mas.core.Cyclable;
-import mas.core.Schedulable;
 import mas.implementation.schedulers.FairCycling;
 
 import java.util.ArrayList;
@@ -11,7 +10,7 @@ public class MainPhilosophe {
 
     public static void main(String[] args) {
 
-        class MyFairCycling extends FairCycling{
+        class MyFairCycling extends FairCycling {
 
             long startTimeCycle = 0;
 
@@ -37,13 +36,14 @@ public class MainPhilosophe {
                 cycleTime.add(System.nanoTime() - startTimeCycle);
             }
 
-            public String getCycleTime(){
+            public double getCycleTime(){
                 double moyenne = cycleTime.stream().mapToLong(value -> value).average().orElse(0.0);
-                return "\tCycle moyen : " + moyenne + " nanoseconds";
+                return moyenne;
             }
         }
 
-        int nAgents = 1000;
+        int nAgents = 100;
+        int nbCycles = 1000;
 
         Philosopher[] philosophers = new Philosopher[nAgents];
         Fork[] forks = new Fork[nAgents];
@@ -70,7 +70,7 @@ public class MainPhilosophe {
         long startTimeCycleSequential = 0;
         List<Long> cycleTimeSequential = new ArrayList<>();
 
-        while(nbCycle < 1000){
+        while(nbCycle < nbCycles){
             startTimeCycleSequential = System.nanoTime();
 
             for(Philosopher philosopher : philosophers){
@@ -84,8 +84,8 @@ public class MainPhilosophe {
 
         final long endTimeSequential = System.nanoTime();
 
-        System.out.println("Iterative : Total execution time: " + (endTimeSequential / 1000000 - startTimeSequential / 1000000) + " microseconds");
-        System.out.println("\tCycle : " + cycleTimeSequential.stream().mapToLong(value -> value).average().orElse(0.0) + " nanoseconds");
+        System.out.println("Iterative : Total execution time: " + (endTimeSequential / 1000 - startTimeSequential / 1000) + " microseconds");
+        System.out.println("\tCycle : " + cycleTimeSequential.stream().mapToLong(value -> value).average().orElse(0.0) /1000 + " microseconds");
 
         final long startTime = System.nanoTime();
 
@@ -119,7 +119,7 @@ public class MainPhilosophe {
 
 
         final long endTime = System.nanoTime();
-        System.out.println("AMAk : Total execution time: " + (endTime / 1000000 - startTime / 1000000) + " microseconds");
-        System.out.println(scheduler.getCycleTime());
+        System.out.println("AMAk : Total execution time: " + (endTime / 1000 - startTime / 1000) + " microseconds");
+        System.out.println("\tCycle moyen : " + scheduler.getCycleTime() / 1000 + " microseconds");
     }
 }
diff --git a/src/example/randomants/Ant.java b/src/example/randomants/Ant.java
index 5cbc79580b4d2bbb0608e78213d19d57d51f190c..2cd62d3116725acbc1d50d6a04a40cff1646eb30 100644
--- a/src/example/randomants/Ant.java
+++ b/src/example/randomants/Ant.java
@@ -1,7 +1,7 @@
 package example.randomants;
 
 import mas.core.Agent;
-import mas.environment.TwoDContinuosGrid;
+import mas.environment.TwoDCContinuousGrid;
 import mas.ui.VUI;
 import mas.ui.drawables.DrawableImage;
 
@@ -37,7 +37,7 @@ public class Ant extends Agent {
     private double angle = Math.random() * Math.PI * 2;
     private DrawableImage image;
 
-    TwoDContinuosGrid environment;
+    TwoDCContinuousGrid environment;
 
     /**
      * Constructor of the ant.
@@ -51,7 +51,7 @@ public class Ant extends Agent {
      * @param _environment
      *            environment of the ant
      */
-    public Ant(int _id, double startX, double startY, TwoDContinuosGrid _environment) {
+    public Ant(int _id, double startX, double startY, TwoDCContinuousGrid _environment) {
         numberOfAnts++;
         id = _id;
         dx = startX;
diff --git a/src/example/randomants/MainAnt.java b/src/example/randomants/MainAnt.java
index 3944436e6f0bba4fcd4b17dc513ef22d7bbf0500..245116130f5fef29bd53a8b55caa99fe208bc8d9 100644
--- a/src/example/randomants/MainAnt.java
+++ b/src/example/randomants/MainAnt.java
@@ -2,7 +2,7 @@ package example.randomants;
 
 import mas.core.Agent;
 import mas.core.Cyclable;
-import mas.environment.TwoDContinuosGrid;
+import mas.environment.TwoDCContinuousGrid;
 import mas.implementation.schedulers.variations.TwoDCycling;
 import mas.ui.MainWindow;
 import mas.ui.SchedulerToolbar;
@@ -32,7 +32,7 @@ public class MainAnt {
 
         AntHill hill = new AntHill(widht, height);
 
-        TwoDContinuosGrid env = new TwoDContinuosGrid(widht, height);
+        TwoDCContinuousGrid env = new TwoDCContinuousGrid(widht, height);
 
         int nAgents = 50;
 
diff --git a/src/mas/core/Cyclable.java b/src/mas/core/Cyclable.java
index 1d88af61dd417753e3a8dd0073badee051dd2f82..c5785b331ffbd843648ce177059d04f6c66d6c2d 100644
--- a/src/mas/core/Cyclable.java
+++ b/src/mas/core/Cyclable.java
@@ -1,7 +1,7 @@
 package mas.core;
 
 /**
- * A cyclable objet.
+ * A cyclable objet. This objet must be scheduled by a {@link Schedulable}.
  */
 public interface Cyclable {
 
diff --git a/src/mas/core/Schedulable.java b/src/mas/core/Schedulable.java
index 1d88b13009c9b3d727677b85c2d2b569b9ac3832..acad3b2747290ed0ab9ea61174264586161fb345 100644
--- a/src/mas/core/Schedulable.java
+++ b/src/mas/core/Schedulable.java
@@ -1,16 +1,10 @@
 package mas.core;
 
 /**
- * A schedulable object.
- *
+ * A schedulable object. Made to code schedulers.
  */
 public interface Schedulable {
 
-    /**
-     * Default sleep time
-     */
-    public static final int DEFAULT_SLEEP = 0;
-
     /**
      * Launch the scheduler if it is not running.
      */
diff --git a/src/mas/core/Sleepable.java b/src/mas/core/Sleepable.java
new file mode 100644
index 0000000000000000000000000000000000000000..bbe0a8eade2ae5c2e93ecb0ec2805331fbfe533d
--- /dev/null
+++ b/src/mas/core/Sleepable.java
@@ -0,0 +1,32 @@
+package mas.core;
+
+/**
+ * A sleepable object. Useful for schedulers which can have sleep time between cycles.
+ */
+public interface Sleepable {
+
+    /**
+     * Default sleep time
+     */
+    int DEFAULT_SLEEP = 0;
+
+    /**
+     * Getter for the sleep time.
+     *
+     * @return the current time elapsed between each system's cycle
+     */
+    int getSleep();
+
+    /**
+     * Setter for the sleep time.
+     *
+     * @param sleep
+     *          The time between each system's cycle
+     */
+    void setSleep(int sleep);
+
+    /**
+     * Performs the waiting time between two cycles of the system.
+     */
+    void doSleep();
+}
diff --git a/src/mas/core/ThreeStepCyclable.java b/src/mas/core/ThreeStepCyclable.java
index e2be1db5f83f15b087776176caa5b970f28b0525..5368e8f0cd528c307aa5bf82f04a401c0eb49279 100644
--- a/src/mas/core/ThreeStepCyclable.java
+++ b/src/mas/core/ThreeStepCyclable.java
@@ -10,7 +10,7 @@ public interface ThreeStepCyclable extends Cyclable {
         perceive();
         decide();
         act();
-    };
+    }
 
     /**
      * This method represents the perception phase of the agent.
diff --git a/src/mas/core/TwoStepCyclable.java b/src/mas/core/TwoStepCyclable.java
index dc6a1daeb326cec60a22a190b3cc9a5ddaf05792..2b9530c8bfa4324f0fa928bbb3e75b5f7f1c7e5f 100644
--- a/src/mas/core/TwoStepCyclable.java
+++ b/src/mas/core/TwoStepCyclable.java
@@ -9,7 +9,7 @@ public interface TwoStepCyclable extends Cyclable {
     default void cycle(){
         perceive();
         decideAndAct();
-    };
+    }
 
     /**
      * This method represents the perception phase of the agent.
diff --git a/src/mas/environment/TwoDContinuosGrid.java b/src/mas/environment/TwoDCContinuousGrid.java
similarity index 65%
rename from src/mas/environment/TwoDContinuosGrid.java
rename to src/mas/environment/TwoDCContinuousGrid.java
index 8ae9bdeac00d7b912bb8f51bef2d61e99c7a1cdf..71a72ea8ebc523d6095d07ea918610b2f1293d25 100644
--- a/src/mas/environment/TwoDContinuosGrid.java
+++ b/src/mas/environment/TwoDCContinuousGrid.java
@@ -1,22 +1,22 @@
 package mas.environment;
 
 /**
- * A 2 dimensions continuous grid.
+ * A 2 dimensions continuous grid representing the environment of a MAS.
  */
-public class TwoDContinuosGrid {
+public class TwoDCContinuousGrid {
 
-    private int width;
-    private int height;
+    private final int width;
+    private final int height;
 
     /**
-     * Constructor of TwoDContinuosGrid.
+     * Constructor of TwoDContinuousGrid.
      *
      * @param _width
      *          width of the environment
      * @param _height
      *          height of the environment
      */
-    public TwoDContinuosGrid(int _width, int _height){
+    public TwoDCContinuousGrid(int _width, int _height){
         height = _height;
         width = _width;
     }
diff --git a/src/mas/implementation/schedulers/AsyncCycling.java b/src/mas/implementation/schedulers/AsyncCycling.java
index 3e0941add4e6b9a927b9d443538287ac387b747f..a99e26539a1fa1b91aaa69afa6b27baefacb417c 100644
--- a/src/mas/implementation/schedulers/AsyncCycling.java
+++ b/src/mas/implementation/schedulers/AsyncCycling.java
@@ -2,6 +2,7 @@ package mas.implementation.schedulers;
 
 import mas.core.Cyclable;
 import mas.core.Schedulable;
+import mas.core.Sleepable;
 
 import java.util.LinkedHashSet;
 import java.util.Set;
@@ -12,7 +13,7 @@ import java.util.concurrent.*;
  *
  * @author David Antunes
  */
-public class AsyncCycling implements Schedulable {
+public class AsyncCycling implements Schedulable, Sleepable {
 
     /**
      * The cyclable objects handled by the scheduler.
@@ -20,7 +21,7 @@ public class AsyncCycling implements Schedulable {
     protected final Set<Cyclable> cyclables = new LinkedHashSet<>();
 
     /**
-     * Time between two cycles. Default time in {@link Schedulable#DEFAULT_SLEEP}.
+     * Time between two cycles. Default time in {@link Sleepable#DEFAULT_SLEEP}.
      */
     private int sleep = DEFAULT_SLEEP;
 
@@ -51,9 +52,7 @@ public class AsyncCycling implements Schedulable {
     @Override
     public void start() {
         for (Cyclable cyclable : cyclables){
-            executor.execute(() -> {
-                manageCyclable(cyclable);
-            });
+            executor.execute(() -> manageCyclable(cyclable));
         }
     }
 
@@ -84,9 +83,7 @@ public class AsyncCycling implements Schedulable {
         cyclable.setScheduler(this);
 
         if(!mustStop){
-            executor.execute(() -> {
-                manageCyclable(cyclable);
-            });
+            executor.execute(() -> manageCyclable(cyclable));
         }
     }
 
@@ -109,25 +106,25 @@ public class AsyncCycling implements Schedulable {
         }
     }
 
-    /**
-     * Getter for the sleep time.
-     *
-     * @return the current time elapsed between each cyclable's cycle
-     */
+    @Override
     public int getSleep() {
         return sleep;
     }
 
-    /**
-     * Setter for the sleep time.
-     *
-     * @param sleep
-     *          The time between each cyclable's cycle
-     */
+    @Override
     public void setSleep(int sleep) {
         this.sleep = sleep;
     }
 
+    @Override
+    public void doSleep(){
+        try {
+            Thread.sleep(sleep);
+        } catch (InterruptedException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
     /**
      * Executes a cycle and set up the next cycle if needed.
      *
@@ -145,16 +142,4 @@ public class AsyncCycling implements Schedulable {
             cyclables.remove(cyclable);
         }
     }
-
-    /**
-     * Performs the waiting time between two cycles.
-     */
-    protected void doSleep(){
-        try {
-            Thread.sleep(sleep);
-        } catch (InterruptedException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
 }
diff --git a/src/mas/implementation/schedulers/FairCycling.java b/src/mas/implementation/schedulers/FairCycling.java
index 79d4ae53ace5fae82f9734796abe9ed7c0dd67a0..f4ad3f929ee9f7625b548172ac5b2ed99e08bbda 100644
--- a/src/mas/implementation/schedulers/FairCycling.java
+++ b/src/mas/implementation/schedulers/FairCycling.java
@@ -2,22 +2,18 @@ package mas.implementation.schedulers;
 
 import mas.core.Cyclable;
 import mas.core.Schedulable;
+import mas.core.Sleepable;
 
 import java.util.*;
 import java.util.concurrent.*;
 
-/**
- *
- * Chaque agent execute exactement 1 cycle pour chaque cycle systeme.
- */
-
 /**
  * The FairCycling scheduler schedules tasks using a {@link Executors#newCachedThreadPool()}.
  * Every cyclable executes its cycle once every system's cycle.
  *
  * @author David Antunes
  */
-public class FairCycling implements Schedulable {
+public class FairCycling implements Schedulable, Sleepable {
 
     /**
      * The cyclable objects handled by the scheduler.
@@ -30,7 +26,7 @@ public class FairCycling implements Schedulable {
     protected Queue<Cyclable> pendingToAddCyclables = new ConcurrentLinkedQueue<>();
 
     /**
-     * Time between two cycles. Default time in {@link Schedulable#DEFAULT_SLEEP}.
+     * Time between two cycles. Default time in {@link Sleepable#DEFAULT_SLEEP}.
      */
     protected int sleep = DEFAULT_SLEEP;
 
@@ -79,7 +75,7 @@ public class FairCycling implements Schedulable {
 
     @Override
     public void start() {
-        executor.execute(() -> doCycle());
+        executor.execute(this::doCycle);
     }
 
     @Override
@@ -120,43 +116,45 @@ public class FairCycling implements Schedulable {
         }
     }
 
-    /**
-     * This method is called at the end of every system's cycle.
-     */
-    protected void onCycleEnds() {
-
+    @Override
+    public void addCyclable(Cyclable cyclable){
+        cyclable.setScheduler(this);
+        pendingToAddCyclables.add(cyclable);
     }
 
-    /**
-     * This method is called at the start of every system's cycle.
-     */
-    protected void onCycleStarts(){
+    @Override
+    public int getSleep() {
+        return sleep;
+    }
 
+    @Override
+    public void setSleep(int sleep) {
+        this.sleep = sleep;
     }
 
     @Override
-    public void addCyclable(Cyclable cyclable){
-        cyclable.setScheduler(this);
-        pendingToAddCyclables.add(cyclable);
+    public void doSleep(){
+        if (getSleep() != 0) {
+            try {
+                Thread.sleep(sleep);
+            } catch (final InterruptedException e) {
+                e.printStackTrace();
+            }
+        }
     }
 
     /**
-     * Getter for the sleep time.
-     *
-     * @return the current time elapsed between each system's cycle
+     * This method is called at the end of every system's cycle.
      */
-    public int getSleep() {
-        return sleep;
+    protected void onCycleEnds() {
+
     }
 
     /**
-     * Setter for the sleep time.
-     *
-     * @param sleep
-     *          The time between each system's cycle
+     * This method is called at the start of every system's cycle.
      */
-    public void setSleep(int sleep) {
-        this.sleep = sleep;
+    protected void onCycleStarts(){
+
     }
 
     /**
@@ -212,7 +210,7 @@ public class FairCycling implements Schedulable {
                     throw new RuntimeException(e);
                 }
             }
-            executor.execute(() -> doCycle());
+            executor.execute(this::doCycle);
         }
     }
 
@@ -225,19 +223,6 @@ public class FairCycling implements Schedulable {
         pendingToAddCyclables.clear();
     }
 
-    /**
-     * Performs the waiting time between two cycles of the system.
-     */
-    protected void doSleep(){
-        if (getSleep() != 0) {
-            try {
-                Thread.sleep(sleep);
-            } catch (final InterruptedException e) {
-                e.printStackTrace();
-            }
-        }
-    }
-
     /**
      * Getter for the number of cycles.
      *
diff --git a/src/mas/implementation/schedulers/FairPosCycling.java b/src/mas/implementation/schedulers/FairPosCycling.java
index 16d52846b61756c60b3f623cb6e767a8e0965ca1..791060c22d42bb1f542194e316846ff719ce4ef9 100644
--- a/src/mas/implementation/schedulers/FairPosCycling.java
+++ b/src/mas/implementation/schedulers/FairPosCycling.java
@@ -2,11 +2,12 @@ package mas.implementation.schedulers;
 
 import mas.core.Cyclable;
 import mas.core.Schedulable;
+import mas.core.Sleepable;
 
 /**
  * Même que fair + equitable sur position des Round Robin
  */
-public class FairPosCycling implements Schedulable {
+public class FairPosCycling implements Schedulable, Sleepable {
     @Override
     public void start() {
 
@@ -27,25 +28,21 @@ public class FairPosCycling implements Schedulable {
 
     }
 
-    /**
-     * Getter for the sleep time.
-     *
-     * @return the current time elapsed between each system's cycle
-     */
+    @Override
     public int getSleep() {
         return 0;
     }
 
-    /**
-     * Setter for the sleep time.
-     *
-     * @param sleep
-     *          The time between each system's cycle
-     */
+    @Override
     public void setSleep(int sleep) {
 
     }
 
+    @Override
+    public void doSleep() {
+
+    }
+
     @Override
     public void addCyclable(Cyclable cyclable) {
 
diff --git a/src/mas/implementation/schedulers/PausableThreadPoolExecutor.java b/src/mas/implementation/schedulers/PausableThreadPoolExecutor.java
index 4664ece11392e2d0f9ee49ea8f9c72203cce5f73..b8d041f59a79c005b20f0f77699f55d9b61ceb9b 100644
--- a/src/mas/implementation/schedulers/PausableThreadPoolExecutor.java
+++ b/src/mas/implementation/schedulers/PausableThreadPoolExecutor.java
@@ -12,14 +12,14 @@ import java.util.concurrent.locks.ReentrantLock;
  */
 public class PausableThreadPoolExecutor extends ThreadPoolExecutor {
     private boolean isPaused;
-    private ReentrantLock lock;
-    private Condition condition;
+    private final ReentrantLock lock;
+    private final Condition condition;
 
     /**
      * {@link ThreadPoolExecutor#ThreadPoolExecutor(int, int, long, TimeUnit, BlockingQueue)}
      */
     public PausableThreadPoolExecutor() {
-        super(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>());
+        super(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<>());
         lock = new ReentrantLock();
         condition = lock.newCondition();
     }