diff --git a/doc/report/figures/fsm/agent_beginning.gv b/doc/report/figures/fsm/agent_beginning.gv
index 65c80e8732a4c31de941b56a071ac6eba6e0f584..178bc663a064c85ebe2e630e1aad030ccf3de739 100644
--- a/doc/report/figures/fsm/agent_beginning.gv
+++ b/doc/report/figures/fsm/agent_beginning.gv
@@ -15,6 +15,18 @@ digraph finite_state_machine {
     stash
     "];
 
+    Continue -> Continue [ label = "neighbour : Reject(o) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : MakeOffer(v) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : InformDelta(d) =>
+    stash
+    "];
+
     Continue -> WaitingRoleAssignment [label = "Supervisor : ContinueAlgo =>
     self.reset(self.var)
     broadcast ! InformValue(self.var.val)
diff --git a/doc/report/figures/fsm/agent_beginning.png b/doc/report/figures/fsm/agent_beginning.png
index 26166e33088398d16975702c7643325cb5c92b99..664ecf6ea45479d81bbbebca84e757b45188877e 100644
Binary files a/doc/report/figures/fsm/agent_beginning.png and b/doc/report/figures/fsm/agent_beginning.png differ
diff --git a/doc/report/figures/fsm/committed.gv b/doc/report/figures/fsm/committed.gv
index e5b36aed7c5c10a808e8612caa47c5a4279047ee..bc6c770166da22c9521d06371a03e0d6c045a113 100644
--- a/doc/report/figures/fsm/committed.gv
+++ b/doc/report/figures/fsm/committed.gv
@@ -11,6 +11,18 @@ digraph finite_state_machine {
     Nothing
     "];
 
+    Continue -> Continue [ label = "neighbour : Reject(o) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : MakeOffer(v) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : InformDelta(d) =>
+    stash
+    "];
+
     Continue -> Continue [ label = "neighbour : InformValue(v) =>
     stash
     "];
@@ -88,6 +100,14 @@ Committed -> Committed [label = "neighbour : Reject(someOffer) =>
     Nothing
     "];
 
+    Committed -> Committed [label = "neighbour : GiveGo(someOffer) =>
+    stash
+    "];
+
+    Committed -> Committed [label = "neighbour : GiveNoGo =>
+    stash
+    "];
+
     
     GivingPartnerGoNoGo -> GivingPartnerGoNoGo [label = "self.partner : GiveGo =>
     stash
diff --git a/doc/report/figures/fsm/committed.png b/doc/report/figures/fsm/committed.png
index 1a79180832e2a05c58ea83f5217b75ae6a7f8042..390668b099152daa1868a1d095ab29bb579f359c 100644
Binary files a/doc/report/figures/fsm/committed.png and b/doc/report/figures/fsm/committed.png differ
diff --git a/doc/report/figures/fsm/full_mgm2_agent.gv b/doc/report/figures/fsm/full_mgm2_agent.gv
index 4ded0aaea32012e042cafabb9122795e2a34c23a..5d4bdfde70ac55422525db73263e2c0950a6c2bf 100644
--- a/doc/report/figures/fsm/full_mgm2_agent.gv
+++ b/doc/report/figures/fsm/full_mgm2_agent.gv
@@ -15,6 +15,18 @@ digraph finite_state_machine {
     stash
     "];
 
+    Continue -> Continue [ label = "neighbour : Reject(o) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : MakeOffer(v) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : InformDelta(d) =>
+    stash
+    "];
+
     Continue -> WaitingRoleAssignment [label = "Supervisor : ContinueAlgo =>
     self.reset(self.var)
     broadcast ! InformValue(self.var.val)
@@ -43,6 +55,7 @@ digraph finite_state_machine {
     stash
     "];
 
+
     WaitingRoleAssignment -> OffererWaitingValues  [ label = "self : ChooseSubset(true) =>
     unstashall
     "];
@@ -119,6 +132,10 @@ digraph finite_state_machine {
     stash
     "];
 
+    ReceiverWaitingValues -> ReceiverWaitingValues [label = "neighbour : InformDelta(d) =>
+    stash
+    "];
+
     ReceiverWaitingValues -> ReceiverWaitingValues [label = "neighbour : Reject(someOffer) =>
     Nothing
     "];
@@ -167,9 +184,10 @@ digraph finite_state_machine {
     ReceiverAllOffersReceived -> ReceiverAllOffersReceived [label = "neighbour : InformDelta(delta) =>
     stash
     "];
+    
 
-ReceiverAllOffersReceived -> ReceiverAllOffersReceived [label = "neighbour : Reject(someOffer) =>
-    Nothing
+    ReceiverAllOffersReceived -> ReceiverAllOffersReceived [label = "neighbour : Reject(someOffer) =>
+    nothing
     "];
 
     /*Receive a void offer from itself: there are no viable offers*/
@@ -199,6 +217,14 @@ ReceiverAllOffersReceived -> ReceiverAllOffersReceived [label = "neighbour : Rej
     Nothing
     "];
 
+    Committed -> Committed [label = "neighbour : GiveGo(someOffer) =>
+    stash
+    "];
+
+    Committed -> Committed [label = "neighbour : GiveNoGo =>
+    stash
+    "];
+
     /*committed*/
     Committed -> Committed [label = "neighbour : InformDelta(delta) && (#self.neighbourDeltas < #self.neighbours-1) =>
     self.neighbourDeltas.put(neighbour, delta)
diff --git a/doc/report/figures/fsm/full_mgm2_agent.png b/doc/report/figures/fsm/full_mgm2_agent.png
index 60d765e6a66822cbfeaaa1fcfc826edcf1264bec..790f046a1708209c0c2b61152847eff665fe9466 100644
Binary files a/doc/report/figures/fsm/full_mgm2_agent.png and b/doc/report/figures/fsm/full_mgm2_agent.png differ
diff --git a/doc/report/figures/fsm/receiver.gv b/doc/report/figures/fsm/receiver.gv
index 66be507d451cd7e4f494c8b9b468896523527dd0..681e63298dcf932fc4ee4239a3858c3ec9cb15b0 100644
--- a/doc/report/figures/fsm/receiver.gv
+++ b/doc/report/figures/fsm/receiver.gv
@@ -39,6 +39,10 @@ digraph finite_state_machine {
     stash
     "];
 
+    ReceiverWaitingValues -> ReceiverWaitingValues [label = "neighbour : InformDelta(d) =>
+    stash
+    "];
+
 
     /*RECEIVER WAITING OFFERS*/
     /*Receives a new valid offer*/
diff --git a/doc/report/figures/fsm/receiver.png b/doc/report/figures/fsm/receiver.png
index b7ecbca0082ccf3cc4d05ab5926b2ea04776fd0e..0388e9452e7b212c051f4fd4f94a42c3f7ce9c9d 100644
Binary files a/doc/report/figures/fsm/receiver.png and b/doc/report/figures/fsm/receiver.png differ
diff --git a/doc/report/figures/fsm/uncommitted.gv b/doc/report/figures/fsm/uncommitted.gv
index 5dbc8345766af80caa4abc3ac32a8bd84033d96c..3264e38659140c3a422a17338c921c41747ce695 100644
--- a/doc/report/figures/fsm/uncommitted.gv
+++ b/doc/report/figures/fsm/uncommitted.gv
@@ -11,6 +11,18 @@ digraph finite_state_machine {
     Nothing
     "];
 
+    Continue -> Continue [ label = "neighbour : Reject(o) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : MakeOffer(v) =>
+    stash
+    "];
+
+    Continue -> Continue [ label = "neighbour : InformDelta(d) =>
+    stash
+    "];
+
     Continue -> Continue [ label = "neighbour : InformValue(v) =>
     stash
     "];
diff --git a/doc/report/figures/fsm/uncommitted.png b/doc/report/figures/fsm/uncommitted.png
index 90737060c9bd9573b2467c4fc760f39ba4621901..2ce12ef8b7eb1ead63dd9efd062cb73a3f484584 100644
Binary files a/doc/report/figures/fsm/uncommitted.png and b/doc/report/figures/fsm/uncommitted.png differ
diff --git a/doc/report/fsm.tex b/doc/report/fsm.tex
index 7fd49a5e965bc14f33cc2caa07a6ea939abdec55..2562ee7db7542705ec1a52eece86d376741ff84e 100644
--- a/doc/report/fsm.tex
+++ b/doc/report/fsm.tex
@@ -76,7 +76,10 @@ Messages received in this state: \begin{itemize}
     \item \stopAlgo{}: agent transitions to \final{} with the whole process terminating
     \item \continueAlgo{}: agent called  \reset{} method, emptying\linebreak \receivedOffers{}, \neighbourValues{} and \neighbourDeltas{}.
       early received \informVal{} messages are unstashed, then the agent sends its own value via \informVal{\val} to all its neighbours. It performs \determineSubset{} and send the outcome  to self via \linebreak \chooseSubset{} before  transitioning to \waitingForRole{} where  \chooseSubset{} will be dealt with as well as unstashed \informVal{}.
-\end{itemize}
+    \item \reject{o}: stashes it.
+    \item \makeOff{o}: stashes it.
+    \item \informDelta{d}: stashes it.
+    \end{itemize}
 
 
 \subsubsection{\waitingForRole{}}
@@ -105,6 +108,7 @@ Messages received in this state: \begin{itemize}
 \subsubsection{\offMakingOff{}}
 Before transitioning to the next state, the agent will wait here for the potential partner's response.
 Messages received in this state: \begin{itemize}
+    \item \informDelta{}: stashes it.
     \item \makeOff{someOffer}: message is still answered with a \reject.
     \item \informDelta{someDelta}: messages received from neighbours which are one step ahead are stashed at this stage.
     \item \accept{someCombinedMove}: it will transition to committed and set \commitment{} to true as well as set \partner{} to \linebreak \accept{someOffer}'s sender, this data will also help to compute the new delta.\\
@@ -122,6 +126,7 @@ Messages received in this state: \begin{itemize}
 \subsubsection{\recWaitingValues{}}
 In this state the receiver agent waits until it has been informed of all its neighbours' values.
 Messages received in this state: \begin{itemize}
+    \item \informDelta{}: stashes it.
     \item \informVal{someVal}: are stored in the \neighbourValues{} map and become relevant only if the receiver does not get any acceptable offer.
         Once all of them have been received, the agent transitions to \recWaitingOffers{}.
     \item \makeOff{None/someOffer}: are stashed to be handled in\linebreak \recWaitingOffers{}.
@@ -158,6 +163,7 @@ In both \bestOfferFM{None/someOffer} cases, \informDelta{someDelta} is sent to a
 \subsubsection{\committed{}}
 This state can be reached from \recHavingRecAllOff{} or \linebreak \offMakingOff{}.
 Messages received in this state: \begin{itemize}
+    \item \giveGo{}: stashes it.
     \item \informDelta{someDelta}: messages are added to \neighbourDeltas{} until they have been received from all neighbours.
         When all deltas have been received, the best delta of the neighbourhood can be computed.
         Once it is computed, the agent will send itself either \shouldAct{true} or \shouldAct{false} depending on whether it has the highest delta of its neighbourhood or not.