diff --git a/ant.zip b/ant.zip
index 64f65499b46aa579f4afbf1c9ddb7ad78e624126..d80181d9e9a677256bae64057edba365daca45d9 100644
Binary files a/ant.zip and b/ant.zip differ
diff --git a/ant/agent.py b/ant/agent.py
index 6492e4d766e821c54d18b4be05b8e386cd6aec39..4b376f8c4f57fba0a0f84c6233d3d12310649dc1 100644
--- a/ant/agent.py
+++ b/ant/agent.py
@@ -1,7 +1,7 @@
 import random
 import sys
 
-from iotAmak.agent import Agent
+from iotAmak.agent.agent import Agent
 
 
 class Ant(Agent):
@@ -67,6 +67,14 @@ class Ant(Agent):
         metric["color"] = self.color
         return metric
 
+    def to_canvas(self) -> dict:
+        return {
+            "id": self.id,
+            "x": self.x,
+            "y": self.y,
+            "color": self.color,
+            "cycle": self.nbr_cycle
+        }
 
 if __name__ == '__main__':
     a = Ant(str(sys.argv[1]))
diff --git a/ant/amas.py b/ant/amas.py
index db8368d8207df44e39b0ad50a3ecc276ad1c46a8..822eb7a76abf8d78cf2c47c77cabbd5cc2156239 100644
--- a/ant/amas.py
+++ b/ant/amas.py
@@ -1,7 +1,7 @@
 import sys
 from math import sqrt
 
-from iotAmak.amas import Amas
+from iotAmak.amas.amas import Amas
 
 
 class AntAmas(Amas):
diff --git a/ant/config.json b/ant/config.json
index d96ea1da6a3d94a4476be1f68478f457da459350..bb33cfc06802f0d9338ab482dcc1d0a7792a3b9f 100644
--- a/ant/config.json
+++ b/ant/config.json
@@ -1,7 +1,6 @@
 {
-  "iotamak_version": "0.0.4",
-
-  "seed" : 0,
+  "iotamak_version": "0.0.7",
+  "scheduling_type": "sync",
 
   "canvas": {
     "height" : 500,
diff --git a/ant/env.py b/ant/env.py
index ebadace645176216389d4ca3475162e0336649a8..5487a7b59c9d03eab5df8693c77da5c9e9d5be56 100644
--- a/ant/env.py
+++ b/ant/env.py
@@ -1,7 +1,7 @@
 import sys
 
 
-from iotAmak.environment import Environment
+from iotAmak.env.environment import Environment
 
 
 class AntEnv(Environment):
diff --git a/ant/scheduler.py b/ant/scheduler.py
index 01638e3b3187abb5977e9544ebb4792b9c590abc..4a21e6145b8e0e84aa01b33f92a886f235a7d9d7 100644
--- a/ant/scheduler.py
+++ b/ant/scheduler.py
@@ -1,6 +1,6 @@
 import sys
 
-from iotAmak.scheduler import Scheduler
+from iotAmak.scheduler.scheduler import Scheduler
 
 if __name__ == '__main__':
     a = Scheduler(str(sys.argv[1]), str(sys.argv[2]), str(sys.argv[3]))
diff --git a/ant_communicating.zip b/ant_communicating.zip
index 2db59209b24cdbea563f93791e888e8b9e7a2e14..f125378b6c59172994475573018d535ed5586d03 100644
Binary files a/ant_communicating.zip and b/ant_communicating.zip differ
diff --git a/ant_communicating/agent.py b/ant_communicating/agent.py
index e6a074d613b299701659b77db9b3b73a0cb0ee37..58bd335d10ec734262ad0b54fabf3ad95b7fca76 100644
--- a/ant_communicating/agent.py
+++ b/ant_communicating/agent.py
@@ -1,7 +1,7 @@
 import random
 import sys
 
-from iotAmak.communicating_agent import CommunicatingAgent
+from iotAmak.agent.communicating_agent import CommunicatingAgent
 
 
 class Ant(CommunicatingAgent):
@@ -65,13 +65,20 @@ class Ant(CommunicatingAgent):
         for n in self.neighbors:
             self.send_mail(n.get("id"), {"color": self.color})
 
+    def to_canvas(self) -> dict:
+        return {
+            "id": self.id,
+            "x": self.x,
+            "y": self.y,
+            "color": self.color,
+            "cycle": self.nbr_cycle
+        }
 
     def send_metric(self):
         metric = super(Ant, self).send_metric()
 
         metric["x"] = self.x
         metric["y"] = self.y
-        metric["color"] = self.color
         return metric
 
 
diff --git a/ant_communicating/amas.py b/ant_communicating/amas.py
index f79ec7a10d5ec1140a2e519097335c0a214f3b04..cc5ce223226e8b4d10e0c2b2c2e40799475e5c4c 100644
--- a/ant_communicating/amas.py
+++ b/ant_communicating/amas.py
@@ -1,7 +1,7 @@
 import sys
 from math import sqrt
 
-from iotAmak.amas import Amas
+from iotAmak.amas.amas import Amas
 
 
 class AntAmas(Amas):
diff --git a/ant_communicating/config.json b/ant_communicating/config.json
index d96ea1da6a3d94a4476be1f68478f457da459350..bb33cfc06802f0d9338ab482dcc1d0a7792a3b9f 100644
--- a/ant_communicating/config.json
+++ b/ant_communicating/config.json
@@ -1,7 +1,6 @@
 {
-  "iotamak_version": "0.0.4",
-
-  "seed" : 0,
+  "iotamak_version": "0.0.7",
+  "scheduling_type": "sync",
 
   "canvas": {
     "height" : 500,
diff --git a/ant_communicating/env.py b/ant_communicating/env.py
index ebadace645176216389d4ca3475162e0336649a8..5487a7b59c9d03eab5df8693c77da5c9e9d5be56 100644
--- a/ant_communicating/env.py
+++ b/ant_communicating/env.py
@@ -1,7 +1,7 @@
 import sys
 
 
-from iotAmak.environment import Environment
+from iotAmak.env.environment import Environment
 
 
 class AntEnv(Environment):
diff --git a/ant_communicating/scheduler.py b/ant_communicating/scheduler.py
index 01638e3b3187abb5977e9544ebb4792b9c590abc..4a21e6145b8e0e84aa01b33f92a886f235a7d9d7 100644
--- a/ant_communicating/scheduler.py
+++ b/ant_communicating/scheduler.py
@@ -1,6 +1,6 @@
 import sys
 
-from iotAmak.scheduler import Scheduler
+from iotAmak.scheduler.scheduler import Scheduler
 
 if __name__ == '__main__':
     a = Scheduler(str(sys.argv[1]), str(sys.argv[2]), str(sys.argv[3]))
diff --git a/demonstrator.zip b/demonstrator.zip
index 035d3cff04ceab08e99d3f5296d749f0af940548..986fcb0cf7f061607b934e5721516a50504782be 100644
Binary files a/demonstrator.zip and b/demonstrator.zip differ
diff --git a/demonstrator/agent.py b/demonstrator/agent.py
index 6c256d0c2c1a60b53169000b4f80f2873fb7faa7..ba63bcfac7e8e8874576e5e648af8b95a52d04ea 100644
--- a/demonstrator/agent.py
+++ b/demonstrator/agent.py
@@ -10,34 +10,44 @@ class IotAgent(CommunicatingAgent):
         self.nbr_agent: int = nbr_agent
         self.values = []
         self.asked = []
+        self.nei = []
         super().__init__(arguments)
 
     def on_initialization(self) -> None:
         self.operator = random.choice(["+", "-", "*", "/"])
-        self.value = random.randint(0, 9999999)
+        self.value = random.randint(1, 10)
 
     def on_cycle_begin(self) -> None:
-        if self.nbr_cycle == 0:
-            for i in range(2):
-                nei = self.id
-                while self.id == nei:
-                    nei = random.randint(0, self.nbr_agent - 1)
-                self.send_mail(nei, "AskValue")
-                self.log("New nei "+str(nei))
+        pass
 
     def on_perceive(self) -> None:
+
+        while len(self.nei) < 2:
+            self.get_new_nei()
+
         self.values = []
         for mail in self.mailbox:
             if mail.payload == "AskValue":
                 self.asked.append(int(mail.sender_id))
+            elif mail.payload == "Remove":
+                self.asked.remove(int(mail.sender_id))
             else:
                 self.values.append(int(mail.payload))
         self.mailbox = []
 
+        if random.randint(0, 100) == 1:
+            self.nei = [self.nei[0]]
+
     def on_decide(self) -> None:
         pass
 
     def on_act(self) -> None:
+        if self.value == 0:
+            self.value = random.randint(1, 10)
+
+        if self.value > 1000000:
+            self.value = random.randint(1, 10)
+
         if len(self.values) == 2:
             if self.operator == "+":
                 self.value = self.values[0] + self.values[1]
@@ -46,7 +56,10 @@ class IotAgent(CommunicatingAgent):
             elif self.operator == "*":
                 self.value = self.values[0] * self.values[1]
             elif self.operator == "/":
-                self.value = self.values[0] / self.values[1]
+                if self.values[1] == 0:
+                    self.nei = [self.nei[0]]
+                else:
+                    self.value = self.values[0] / self.values[1]
 
     def on_cycle_end(self) -> None:
         for n in self.asked:
@@ -55,6 +68,17 @@ class IotAgent(CommunicatingAgent):
                  " OP : " + self.operator
                  )
 
+    def get_new_nei(self):
+        nei = self.id
+        while self.id == nei:
+            nei = random.randint(0, self.nbr_agent - 1)
+        self.nei = [nei] + self.nei
+        self.send_mail(nei, "AskValue")
+
+    def remove_nei(self):
+        self.send_mail(self.nei[1], "Remove")
+        self.nei = [self.nei[0]]
+
 
 if __name__ == '__main__':
     a = IotAgent(str(sys.argv[1]), int(sys.argv[2]))
diff --git a/demonstrator/config.json b/demonstrator/config.json
index 6c22a082082886c132268731cac474811fdd6403..4bb3bf2933863c21252e292b5a9f3bbe4bf28cfb 100644
--- a/demonstrator/config.json
+++ b/demonstrator/config.json
@@ -1,3 +1,9 @@
 {
-  "iotamak_version": "0.0.6"
+  "iotamak_version": "0.0.7",
+  "scheduling_type": "sync",
+
+  "com_graph": {
+    "fun": "linear",
+    "refresh": 10
+  }
 }
\ No newline at end of file