diff --git a/agent.py b/agent.py
index 6164ff5d15f87a16b4b3249dfdad67cc467dd0d8..75c5a11568529e794fd3ad56af328deb6b4cca1e 100644
--- a/agent.py
+++ b/agent.py
@@ -70,9 +70,6 @@ class Agent(Schedulable):
 
             self.on_perceive()
 
-            self.publish("cycle_done", "")
-            self.wait()
-
             self.on_decide()
 
             self.on_act()
diff --git a/ihm.py b/ihm.py
index 24473463f1a2e7d6443d6790260ec7d68dd7b56a..1331b0d01be4087059507507d8e9e36ea7220c78 100644
--- a/ihm.py
+++ b/ihm.py
@@ -118,6 +118,9 @@ class Ihm(MqttClient, SSHClient):
             if cmd.lower() == "pause":
                 self.client.publish("ihm/pause")
 
+            if cmd.lower() == "unpause":
+                self.client.publish("ihm/unpause")
+
             if cmd.lower() in ["s", "step"]:
                 self.client.publish("ihm/step")
 
@@ -132,6 +135,10 @@ class Ihm(MqttClient, SSHClient):
 
                     print("Hostname :", client.hostname, " Responded : ", result)
 
+            if cmd.lower() == "mode":
+                self.client.publish("ihm/mode")
+
+
         self.client.publish("ihm/step")
         sleep(2)
 
diff --git a/scheduler.py b/scheduler.py
index 93215956962afb0f7279b899ee77d54b15bf9952..2e00a585797fa9979d5c0b1a460e376c700c508a 100644
--- a/scheduler.py
+++ b/scheduler.py
@@ -28,18 +28,33 @@ class Scheduler(Schedulable):
         self.subscribe("env/action_done", self.update_schedulable)
         self.subscribe("ihm/step", self.step)
         self.subscribe("ihm/pause", self.pause)
+        self.subscribe("ihm/unpause", self.unpause)
+        self.subscribe("ihm/mode", self.mode)
 
         self.agent_waiting = 0
         self.schedulable_waiting = 0
 
         print("Init done")
 
+    def mode(self, client, userdata, message) -> None:
+        """
+        Function called when the IHM change scheduler mode
+        """
+        self.execution_policy = (1 - self.execution_policy) % 2
+
     def pause(self, client, userdata, message) -> None:
         """
-        Function called when the IHM pause/unpause the scheduler
+        Function called when the IHM pause the scheduler
         """
-        self.paused = not self.paused
-        self.ihm_token += 1
+        self.paused = True
+        self.ihm_token = 0
+
+    def unpause(self, client, userdata, message) -> None:
+        """
+        Function called when the IHM unpause the scheduler
+        """
+        self.paused = False
+        self.ihm_token = 1
 
     def step(self, client, userdata, message) -> None:
         """
@@ -108,10 +123,7 @@ class Scheduler(Schedulable):
         main part of a cycle : Agent cycle
         """
         self.client.publish("scheduler/agent/wakeup", "")
-        # Agent doing phase 1
-        self.wait_agent()
-        self.client.publish("scheduler/agent/wakeup", "")
-        # agent doing phase 2
+        # Agent doing cycle
         self.wait_agent()
 
     def last_part(self) -> None: