diff --git a/amas.py b/amas.py
index 1ff3e9de7c8a6227d2f201381c357aba56e53bfc..632ec34e2c9852d0e2009ab54272500179fc2d33 100644
--- a/amas.py
+++ b/amas.py
@@ -20,30 +20,43 @@ class Amas(Schedulable, SSHClient):
 
         self.next_id = 0
 
-        self.agents_metric = [None for _ in range(self.next_id)]
+        self.agents_cmd = []
 
         self.on_initialization()
         self.on_initial_agents_creation()
+        self.agents_metric = [None for _ in range(self.next_id)]
 
         self.client.publish("amas/action_done", "")
 
     def on_initial_agents_creation(self):
         pass
 
-    def add_agent(self, agent_to_create):
+    def add_agent(self, experience_name, args):
+
+        command = "nohup python "
+        command += "\"Desktop/mqtt_goyon/iotamak-core/" + experience_name + "/agent.py\" "
+        command += str(self.next_id) + " "
+        for arg in args:
+            command += str(arg) + " "
+        command += "&"
 
-        agents = []
-        for _ in range(agent_to_create):
-            agents.append(Cmd(
-                cmd='nohup python \"Desktop/mqtt_goyon/iotamak-core/agent.py\" ' + str(self.next_id) + " &"
-            ))
-            self.subscribe("agent/" + str(self.next_id) + "/metric", self.agent_metric)
-            self.subscribe("agent/" + str(self.next_id) + "/log", self.agent_log)
+        self.agents_cmd.append(Cmd(command))
 
-            self.client.publish("amas/agent/new", self.next_id)
-            self.next_id += 1
+        self.subscribe("agent/" + str(self.next_id) + "/metric", self.agent_metric)
+        self.subscribe("agent/" + str(self.next_id) + "/log", self.agent_log)
 
-        self.run_cmd(0, agents)
+        self.client.publish("amas/agent/new", self.next_id)
+        self.next_id += 1
+
+    def push_agent(self):
+
+        total_pi = len(self.clients)
+        for client in range(total_pi):
+            self.run_cmd(client, list(self.agents_cmd[
+                                 client * len(self.agents_cmd) // total_pi:(client + 1) * len(
+                                     self.agents_cmd) // total_pi
+                                 ])
+                         )
 
     def agent_log(self, client, userdata, message):
         print("[Log] " + str(message.payload.decode("utf-8")) + " on topic " + message.topic)
@@ -74,6 +87,8 @@ class Amas(Schedulable, SSHClient):
 
     def run(self) -> None:
 
+        self.push_agent()
+
         while not self.exit_bool:
 
             self.wait()
diff --git a/philosophers/agent.py b/philosophers/agent.py
index a939a3aed4abc926675041ff30b969a23fcc109a..6de0ab21cd964bd94c350764f0c961d26d991290 100644
--- a/philosophers/agent.py
+++ b/philosophers/agent.py
@@ -36,22 +36,22 @@ class PhiAgent(Agent):
         res = literal_eval(message.payload.decode("utf-8"))
         if res.get("response") == "True":
             if res.get("side") == "right":
-                self.right_fork.tanken_by = self.id
+                self.right_fork.taken_by = self.id
                 self.right_fork.state = res.get("state")
             else:
-                self.left_fork.tanken_by = self.id
+                self.left_fork.taken_by = self.id
                 self.left_fork.state = res.get("state")
         self.fork_wait = False
 
     def left_fork_update(self, client, userdata, message):
         res = literal_eval(message.payload.decode("utf-8"))
         self.left_fork.state = res.get("state")
-        self.left_fork.tanken_by = res.get("tanken_by")
+        self.left_fork.taken_by = res.get("tanken_by")
 
     def right_fork_update(self, client, userdata, message):
         res = literal_eval(message.payload.decode("utf-8"))
         self.right_fork.state = res.get("state")
-        self.right_fork.tanken_by = res.get("tanken_by")
+        self.right_fork.taken_by = res.get("tanken_by")
 
     def ask_spoon(self, left):
         if left :
@@ -65,16 +65,16 @@ class PhiAgent(Agent):
     def on_decide(self):
         super().on_decide()
 
-        if self.right_fork.tanken_by == -1:
+        if self.right_fork.taken_by == -1:
             self.ask_spoon(False)
 
-        if self.left_fork.tanken_by == -1:
+        if self.left_fork.taken_by == -1:
             self.ask_spoon(True)
 
         if self.state == 1:
-            if self.right_fork.tanken_by != self.id:
+            if self.right_fork.taken_by != self.id:
                 self.ask_spoon(False)
-            if self.left_fork.tanken_by != self.id:
+            if self.left_fork.taken_by != self.id:
                 self.ask_spoon(True)
 
     def on_act(self):
@@ -87,7 +87,7 @@ class PhiAgent(Agent):
                 self.state = 1
         elif self.state == 1:
             self.log("Is Hungry")
-            if self.left_fork.tanken_by == self.right_fork.tanken_by == self.id:
+            if self.left_fork.taken_by == self.right_fork.taken_by == self.id:
                 self.state = 2
         elif self.state == 2:
             self.log("Is Eating")
@@ -96,7 +96,5 @@ class PhiAgent(Agent):
 
 
 if __name__ == '__main__':
-    print("id agent: ", int(sys.argv[1]))
-
     a = PhiAgent(int(sys.argv[1]), int(sys.argv[2]))
     a.run()
diff --git a/philosophers/amas.py b/philosophers/amas.py
index 060ace3d96c4eb522b6fb9b0814c1efac9ca6191..886fd890cd0359e3768b145c442df36d918b712b 100644
--- a/philosophers/amas.py
+++ b/philosophers/amas.py
@@ -4,7 +4,7 @@ import pathlib
 sys.path.insert(0, str(pathlib.Path(__file__).parent.parent))
 
 from amas import Amas
-from tool.ssh_client import Cmd
+
 
 class PhiAmas(Amas):
 
@@ -13,26 +13,10 @@ class PhiAmas(Amas):
         super().__init__()
 
     def on_initial_agents_creation(self):
+        for _ in range(self.agent_to_create):
+            self.add_agent("philosophers", [str(self.agent_to_create)])
 
-        self.add_agent(self.agent_to_create)
-
-    def add_agent(self, agent_to_create):
-
-        agents = []
-        for _ in range(agent_to_create):
-            agents.append(Cmd(
-                cmd='nohup python \"Desktop/mqtt_goyon/iotamak-core/philosophers/agent.py\" ' + str(self.next_id)
-                       + " " + str(self.agent_to_create) + " &"
-            ))
-            self.subscribe("agent/" + str(self.next_id) + "/log", self.agent_log)
-
-            self.client.publish("amas/agent/new", self.next_id)
-            self.next_id += 1
-
-        self.run_cmd(0, [agents[0]])
-        self.run_cmd(1, [agents[1]])
-        self.run_cmd(2, [agents[2]])
 
 if __name__ == '__main__':
     s = PhiAmas(3)
-    s.run()
\ No newline at end of file
+    s.run()
diff --git a/philosophers/env.py b/philosophers/env.py
index 179ba88d2ab8589d2f7e17e4f3943d1673e0b673..34e7c8f2a7cec1ba083f2eacc91517a58c6cdf92 100644
--- a/philosophers/env.py
+++ b/philosophers/env.py
@@ -34,20 +34,20 @@ class PhiEnv(Environment):
             message = {
                 "response": "False"
             }
-        elif self.forks[fork_id].tanken_by == -1:
+        elif self.forks[fork_id].taken_by == -1:
             message = {
                 "response": "True",
                 "side": res,
                 "state": 0
             }
-            self.forks[fork_id].tanken_by = agent_id
+            self.forks[fork_id].taken_by = agent_id
         else:
             message = {
                 "response": "True",
                 "side": res,
                 "state": 1
             }
-            self.forks[fork_id].tanken_by = agent_id
+            self.forks[fork_id].taken_by = agent_id
             self.forks[fork_id].state = 1
 
         self.client.publish("env/agent/" + str(agent_id) + "/ask_spoon", str(message))
@@ -61,7 +61,7 @@ class PhiEnv(Environment):
     def on_cycle_begin(self) -> None:
         for fork in self.forks:
             self.client.publish("env/fork/" + str(fork.identifier), str(fork.to_msg()))
-            print("Fork : ",fork.identifier," taken by ",fork.tanken_by," and is :",fork.state)
+            print("Fork : ", fork.identifier," taken by ", fork.taken_by, " and is :", fork.state)
 
 
 if __name__ == '__main__':
diff --git a/philosophers/fork.py b/philosophers/fork.py
index c9a4b3ea304b3b4be59dbaecb1139e9dd6106782..8e59e66a5067d00f0fc6ba2bfe284dc551240698 100644
--- a/philosophers/fork.py
+++ b/philosophers/fork.py
@@ -7,10 +7,10 @@ class Fork:
         # 0: dirty, 1: clean
         self.state = 0
 
-        self.tanken_by = -1
+        self.taken_by = -1
 
     def to_msg(self):
         return {
                 "state": self.state,
-                "taken_by": self.tanken_by
+                "taken_by": self.taken_by
             }
\ No newline at end of file
diff --git a/tool/update.py b/tool/update.py
index e78bdf9a37f7b91c75cfada6905326b8acc0262d..03b7fde21659827dc95ad2b2b9a7eefa3ef2b680 100644
--- a/tool/update.py
+++ b/tool/update.py
@@ -14,7 +14,6 @@ class VersionManager:
         self.clients = read_ssh(str(pathlib.Path(__file__).parent.resolve())+"/config.json")
 
     def update(self):
-        # TODO: rm previous files
         for client in self.clients:
             transport = paramiko.Transport((client.hostname, 22))
             transport.connect(username=client.user, password=client.password)