diff --git a/performance_results/average/output.gif b/performance_results/average/output.gif
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..89f1815f67f5bce229624ab2d910b7dc81bc4587 100644
Binary files a/performance_results/average/output.gif and b/performance_results/average/output.gif differ
diff --git a/performance_results/average/receiver_1_with_FEC.csv b/performance_results/average/receiver_1_with_FEC.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..68a38854406d8e444ce39b7958fa7b55be74994a 100644
--- a/performance_results/average/receiver_1_with_FEC.csv
+++ b/performance_results/average/receiver_1_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:6088
+data_truncated_received:6
+fec_sent:0
+fec_received:998
+ack_sent:8141
+ack_received:0
+nack_received:0
+packet_ignored:1385
+throughput:85992.859375
+packet_duplicated:1842
+packet_recovered:280
diff --git a/performance_results/worst/output.gif b/performance_results/average/receiver_1_without_FEC.csv
similarity index 100%
rename from performance_results/worst/output.gif
rename to performance_results/average/receiver_1_without_FEC.csv
diff --git a/performance_results/average/sender_1_with_FEC.csv b/performance_results/average/sender_1_with_FEC.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..db8dee1c3b6b958cdb06473b1ddb9e99fff83d93 100644
--- a/performance_results/average/sender_1_with_FEC.csv
+++ b/performance_results/average/sender_1_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:12671
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:8141
+nack_received:6
+packet_ignored:0
+throughput:85874.507812
+min_rtt:10
+max_rtt:10279
+packet_retransmitted:8145
diff --git a/performance_results/worst/receiver_1_with_FEC.csv b/performance_results/average/sender_1_without_FEC.csv
similarity index 100%
rename from performance_results/worst/receiver_1_with_FEC.csv
rename to performance_results/average/sender_1_without_FEC.csv
diff --git a/performance_results/ideal/output.gif b/performance_results/ideal/output.gif
index 36bf9f94f83094a6c326563779624908605cf599..ae8a968b45b58c62a535e62648696f90a97b37d3 100644
Binary files a/performance_results/ideal/output.gif and b/performance_results/ideal/output.gif differ
diff --git a/performance_results/ideal/output.txt b/performance_results/ideal/output.txt
deleted file mode 100644
index c57eff55ebc0c54973903af5f72bac72762cf4f4..0000000000000000000000000000000000000000
--- a/performance_results/ideal/output.txt
+++ /dev/null
@@ -1 +0,0 @@
-Hello World!
\ No newline at end of file
diff --git a/performance_results/ideal/receiver_1_with_FEC.csv b/performance_results/ideal/receiver_1_with_FEC.csv
index 3ff91771a54b0175db3b1d05c60f39ceafb53786..352e260e1b41cc71f55a8d487c8a935ed7cf3012 100644
--- a/performance_results/ideal/receiver_1_with_FEC.csv
+++ b/performance_results/ideal/receiver_1_with_FEC.csv
@@ -1,12 +1,12 @@
 data_sent:0
-data_received:3
+data_received:6284
 data_truncated_received:0
 fec_sent:0
-fec_received:0
-ack_sent:2
+fec_received:588
+ack_sent:35961
 ack_received:0
 nack_received:0
-packet_ignored:0
-throughput:47.904190
-packet_duplicated:1
-packet_recovered:0
+packet_ignored:416
+throughput:26472902.000000
+packet_duplicated:1924
+packet_recovered:166
diff --git a/performance_results/ideal/receiver_1_without_FEC.csv b/performance_results/ideal/receiver_1_without_FEC.csv
index 3ff91771a54b0175db3b1d05c60f39ceafb53786..e42f6ebcc9ebe112fb476ac901cdca6811fb4ed0 100644
--- a/performance_results/ideal/receiver_1_without_FEC.csv
+++ b/performance_results/ideal/receiver_1_without_FEC.csv
@@ -1,12 +1,12 @@
 data_sent:0
-data_received:3
+data_received:4763
 data_truncated_received:0
 fec_sent:0
 fec_received:0
-ack_sent:2
+ack_sent:19781
 ack_received:0
 nack_received:0
-packet_ignored:0
-throughput:47.904190
-packet_duplicated:1
+packet_ignored:225
+throughput:31092336.000000
+packet_duplicated:237
 packet_recovered:0
diff --git a/performance_results/ideal/receiver_2_with_FEC.csv b/performance_results/ideal/receiver_2_with_FEC.csv
index e08d64fa78c577dffdddd023b98fd321dfbb4cc3..55e390f5ff2d277ff85d3becd04475b1e31c2eb2 100644
--- a/performance_results/ideal/receiver_2_with_FEC.csv
+++ b/performance_results/ideal/receiver_2_with_FEC.csv
@@ -1,12 +1,12 @@
 data_sent:0
-data_received:3
+data_received:9084
 data_truncated_received:0
 fec_sent:0
-fec_received:0
-ack_sent:2
+fec_received:632
+ack_sent:44779
 ack_received:0
 nack_received:0
-packet_ignored:0
-throughput:47.928108
-packet_duplicated:1
-packet_recovered:0
+packet_ignored:484
+throughput:24003928.000000
+packet_duplicated:4722
+packet_recovered:164
diff --git a/performance_results/ideal/receiver_2_without_FEC.csv b/performance_results/ideal/receiver_2_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5f50fdc351dede3bf7b648118ee91a2a8c0c09ec
--- /dev/null
+++ b/performance_results/ideal/receiver_2_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4818
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:8364
+ack_received:0
+nack_received:0
+packet_ignored:126
+throughput:30230068.000000
+packet_duplicated:292
+packet_recovered:0
diff --git a/performance_results/ideal/receiver_3_with_FEC.csv b/performance_results/ideal/receiver_3_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..1507615adcdf4d565ecd12979511391fec8a9a87
--- /dev/null
+++ b/performance_results/ideal/receiver_3_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:8030
+data_truncated_received:0
+fec_sent:0
+fec_received:621
+ack_sent:43182
+ack_received:0
+nack_received:0
+packet_ignored:476
+throughput:24160406.000000
+packet_duplicated:3706
+packet_recovered:202
diff --git a/performance_results/ideal/receiver_3_without_FEC.csv b/performance_results/ideal/receiver_3_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..cff668cd66753024b04bb536b5bf6451a9bbcd71
--- /dev/null
+++ b/performance_results/ideal/receiver_3_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:7806
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:44336
+ack_received:0
+nack_received:0
+packet_ignored:468
+throughput:23338832.000000
+packet_duplicated:3280
+packet_recovered:0
diff --git a/performance_results/ideal/sender_1_with_FEC.csv b/performance_results/ideal/sender_1_with_FEC.csv
index 5072be82b51ce84b931c2426431e0c2cf5cd9a05..5d5e35bbc57de064b0a47e2c8a25f949e9480d76 100644
--- a/performance_results/ideal/sender_1_with_FEC.csv
+++ b/performance_results/ideal/sender_1_with_FEC.csv
@@ -1,13 +1,13 @@
-data_sent:4
+data_sent:40273
 data_received:0
 data_truncated_received:0
-fec_sent:1
+fec_sent:1132
 fec_received:0
 ack_sent:0
-ack_received:2
+ack_received:35759
 nack_received:0
 packet_ignored:0
-throughput:23.964054
-min_rtt:2001
-max_rtt:2004
-packet_retransmitted:2
+throughput:26322488.000000
+min_rtt:2
+max_rtt:17
+packet_retransmitted:35747
diff --git a/performance_results/ideal/sender_1_without_FEC.csv b/performance_results/ideal/sender_1_without_FEC.csv
index 8affded02215acf29664e23c151b36647bab665a..691b388df006d467d9c216318d7ba3c5a26294a9 100644
--- a/performance_results/ideal/sender_1_without_FEC.csv
+++ b/performance_results/ideal/sender_1_without_FEC.csv
@@ -1,13 +1,13 @@
-data_sent:4
+data_sent:24294
 data_received:0
 data_truncated_received:0
 fec_sent:0
 fec_received:0
 ack_sent:0
-ack_received:2
+ack_received:19774
 nack_received:0
 packet_ignored:0
-throughput:23.958073
-min_rtt:2001
-max_rtt:2006
-packet_retransmitted:2
+throughput:7130062.500000
+min_rtt:2
+max_rtt:2002
+packet_retransmitted:19768
diff --git a/performance_results/ideal/sender_2_with_FEC.csv b/performance_results/ideal/sender_2_with_FEC.csv
index c545964e0e61a24090565fdce86f045dfb695447..51be03e6fff9980f59bdde313d49d6f5655a6fce 100644
--- a/performance_results/ideal/sender_2_with_FEC.csv
+++ b/performance_results/ideal/sender_2_with_FEC.csv
@@ -1,13 +1,13 @@
-data_sent:4
+data_sent:48946
 data_received:0
 data_truncated_received:0
-fec_sent:1
+fec_sent:1132
 fec_received:0
 ack_sent:0
-ack_received:2
+ack_received:44429
 nack_received:0
 packet_ignored:0
-throughput:23.970037
-min_rtt:2001
-max_rtt:2004
-packet_retransmitted:2
+throughput:23911010.000000
+min_rtt:2
+max_rtt:21
+packet_retransmitted:44420
diff --git a/performance_results/ideal/sender_2_without_FEC.csv b/performance_results/ideal/sender_2_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..404d2d042cef3df999d3239bc59c8d81d4b6bd3e
--- /dev/null
+++ b/performance_results/ideal/sender_2_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:12881
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:8364
+nack_received:0
+packet_ignored:0
+throughput:30131758.000000
+min_rtt:2
+max_rtt:16
+packet_retransmitted:8355
diff --git a/performance_results/ideal/sender_3_with_FEC.csv b/performance_results/ideal/sender_3_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..7dbc209821e96595180930cc79e3367dd3d09dce
--- /dev/null
+++ b/performance_results/ideal/sender_3_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:47291
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:42769
+nack_received:0
+packet_ignored:0
+throughput:24097572.000000
+min_rtt:2
+max_rtt:25
+packet_retransmitted:42765
diff --git a/performance_results/ideal/sender_3_without_FEC.csv b/performance_results/ideal/sender_3_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..c0d8245b3577af3887a20a0e167820f3147ab8f7
--- /dev/null
+++ b/performance_results/ideal/sender_3_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:48632
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:44118
+nack_received:0
+packet_ignored:0
+throughput:23280190.000000
+min_rtt:1
+max_rtt:24
+packet_retransmitted:44106
diff --git a/performance_results/worst/sender_1_with_FEC.csv b/performance_results/worst/sender_1_with_FEC.csv
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/packet_interface.h b/src/packet_interface.h
index 930f455041fe902838849fdeab72af186c6faca1..788f863919a0b53b26f999265b7f549170e1e221 100644
--- a/src/packet_interface.h
+++ b/src/packet_interface.h
@@ -70,6 +70,7 @@ typedef enum {
 #define WINDOW_MASK                     0x1F
 #define TR_SETTER_TO_ZERO               0xDF
 #define SECOND_TO_LAST_PKT              0x3AB33922 // Use to specify it was the second to last pkt sent by the sender -> Need to be random ?
+#define HELLO_PARTNER              		0x83F57019
 
 #define TYPE_SHIFT                      6
 #define TR_SHIFT                        5
diff --git a/src/receiver_utils.c b/src/receiver_utils.c
index d572b3c7be4d4f5027e4da9912e7a25340289470..68dd1f608fe0c59573fe9503e1209e3a1a789f00 100644
--- a/src/receiver_utils.c
+++ b/src/receiver_utils.c
@@ -552,9 +552,7 @@ int handle_incoming(struct pollfd * pfd, receiver_state_t * state)
  */
 void reception_loop(struct pollfd * pfd, receiver_state_t * state)
 {   
-    struct timeval current_time, last_packet_received, last_ack_nack_sent; 
-    gettimeofday(&last_ack_nack_sent, NULL);
-    int can_send;
+    struct timeval current_time, last_packet_received; 
     while (state->ack_to_send != NULL || state->transfer_done == 0)
     {
         int ready = poll(pfd, 1, -1);
@@ -564,9 +562,6 @@ void reception_loop(struct pollfd * pfd, receiver_state_t * state)
             return;
         }
 
-        gettimeofday(&current_time, NULL);
-        float interval = time_milliseconds(&current_time) - time_milliseconds(&last_ack_nack_sent);
-        can_send = interval > (float) MAX_NETWORK_DELAY;
         if (pfd->revents & POLLIN)
         {
             if (handle_incoming(pfd, state) != 0)   
@@ -575,11 +570,10 @@ void reception_loop(struct pollfd * pfd, receiver_state_t * state)
             if (state->last_data_packet < TWO_EXP_EIGHT)        /* This means we received last data packet transfer */     
                 gettimeofday(&last_packet_received, NULL);
  
-        } else if (pfd->revents & POLLOUT && can_send) 
+        } else if (pfd->revents & POLLOUT) 
         {
             if (send_if_inneed(pfd, state) != 0)    
                 return;
-            gettimeofday(&last_ack_nack_sent, NULL);
         } 
 
         if (state->last_data_packet < TWO_EXP_EIGHT)            /* This is a signal we use between us in order to mark the last datapacket containing data */
diff --git a/src/receiver_utils.h b/src/receiver_utils.h
index 9f2f90246a8c0fd03b28655af104ef5b398c8696..4a2882a2a7388b27f180bcbdf0cb0e2451c258ca 100644
--- a/src/receiver_utils.h
+++ b/src/receiver_utils.h
@@ -32,7 +32,7 @@
 #define TIMER_MULTIPLIER_BY_2 2
 #define RECEIVER_INACTIVE_TIMEOUT 20
 #define FEC_CALCULATED_ON 4
-#define MAX_NETWORK_DELAY 2000 // In milliseconds
+#define MAX_ACK_INTERVAL 500 // In milliseconds
 
 
 /* Represent the receiver's connection state 
diff --git a/src/utils.h b/src/utils.h
index 964c1037ff760a6a157416bc5ee136abe7db4c9b..9fd0cf15dbf0d2f1ca4f0fa571f6ab8ad2754dfb 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -17,7 +17,7 @@
 #include <unistd.h>
 
 #include "log.h"
-
+#define OxFFFFFFF
 
 typedef struct __attribute__((__packed__))
 {
diff --git a/tests/run_perfomance.sh b/tests/run_perfomance.sh
index b9501e503ee93a8a2a6335a0617eec1a555b7887..4b3ce89b00e3f8d92ff794b8fcdd8c587a0ba56e 100755
--- a/tests/run_perfomance.sh
+++ b/tests/run_perfomance.sh
@@ -51,4 +51,4 @@ if [ ! -d "performance_results/worst" ]; then
   mkdir "performance_results/worst"
 fi
 export ERROR_RATE CUT_RATE DELAY JITTER LOSS_RATE && ./tests/perfomance_test.sh ${FILE_TO_TRANSFER} "performance_results/worst/" &
-wait $!
\ No newline at end of file
+wait $!
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log
index c2ebc87ef50e91c13d005389804f47688c309a79..3ae3a1d9cf0c8953d908b9e9384849da29bda8de 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_link.log
@@ -1,18 +1,21 @@
-@@ Using random seed: 1650988936
+@@ Using random seed: 1650995751
 @@ Using parameters:
-.. port: 65074
-.. forward_port: 65008
+.. port: 65108
+.. forward_port: 65185
 .. delay: 100
 .. jitter: 100
 .. err_rate: 5
 .. cut_rate: 5
 .. loss_rate: 1
-.. seed: 1650988936
+.. seed: 1650995751
 .. link_direction: Forward
-@@ Remote host is ::1 [43169]
-[SEQ   0] Delayed packet by 144 ms
+@@ Remote host is ::1 [42568]
+[SEQ   0] Delayed packet by 117 ms
 [SEQ   0] Sent packet (Forward).
 [SEQ   1] Sent packet (Reverse).
-[SEQ   1] Delayed packet by 87 ms
+[SEQ   1] Dropping packet
+[FEC   0] Delayed packet by 3 ms
+[FEC   0] Sent packet (Forward).
+[SEQ   1] Delayed packet by 148 ms
 [SEQ   1] Sent packet (Forward).
 [SEQ   2] Sent packet (Reverse).
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log
index c6145a5c4c32b55d40153f01530bf94e1ef94ad4..69e57432f075b529788ea9c4a0407d1786830580 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_receiver.log
@@ -1,15 +1,16 @@
-[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv, listen_ip is ::1, listen_port is 65008
-[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65008
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65074
-[DEBUG] Received data packet seqnum 0 with timestamp 1650988936 | current_window_size : 31, current_window_start : 0
+[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv, listen_ip is ::1, listen_port is 65185
+[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65185
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65108
+[DEBUG] Received data packet seqnum 0 with timestamp 984824098 | current_window_size : 31, current_window_start : 0
 [DEBUG] Sent ACK saying we are waiting for 1, timestamp 0
-[DEBUG] Received data packet seqnum 1 with timestamp 1650988938 | current_window_size : 30, current_window_start : 0
+[DEBUG] Received FEC with seqnum [0] but wasn't used
+[DEBUG] Received data packet seqnum 1 with timestamp 0 | current_window_size : 30, current_window_start : 0
 [DEBUG] Going to consume the next 2 packets.
 [DEBUG] Consuming packet : 0 | curr_recv_window = 29, recv_window_start = 0
 [DEBUG] Consuming packet : 1 | curr_recv_window = 30, recv_window_start = 1
 [DEBUG] Received the last packet
-[DEBUG] Sent ACK saying we are waiting for 2, timestamp 1650988938
+[DEBUG] Sent ACK saying we are waiting for 2, timestamp 0
 [DEBUG] Done the transfer with done status being true
-[DEBUG] The difference between the two is 2095000.000000 seconds
-[DEBUG] The transfer took 2095.000000 seconds
+[DEBUG] The difference between the two is 2174000.000000 seconds
+[DEBUG] The transfer took 2174.000000 seconds
 [DEBUG] Wrote the transfer statistics to tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv.
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log
index 29f222ca36cbb4e527948f22cb89eff8a54e9f31..be29efda3552d9628e0686855f6cbc6cf2345494 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_greeting_sender.log
@@ -1,4 +1,27 @@
-[SEND] [Seq: 000, Win_Rec: 1, Len: 12] (ack)
-[RECV] [Seq: 001, Type: 2, len 0]
-[SEND] [Seq: 001, Win_Rec: 30, Len: 0] (ack)
-[RECV] [Seq: 002, Type: 2, len 0]
+[DEBUG] Sender has following arguments: 
+		filename is tests_files/greeting.txt,
+		stats_filename is tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv,
+		fec_enabled is 1,
+		receiver_ip is ::1,
+		receiver_port is 65108
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65108
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 31 | receiver window size: 1
+[DEBUG] The LAST PTYPE_DATA is being sent !
+[DEBUG] Sending the pkt with seqnum: 0
+[DEBUG] The sender is reading from the socket.
+[DEBUG] The ACK with the seqnum: 1 has been received
+[DEBUG] The sender is cumulatively acknowledging [0 : 1[ (place in the buffer) | [0, 1[ (seqnum)
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 31 | receiver window size: 30
+[DEBUG] The CLOSING pkt is being sent !
+[DEBUG] Sending the pkt with seqnum: 1
+[DEBUG] A timer of -> 30000ms <- has started after sending the last PTYPE_DATA pkt !
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 30 | receiver window size: 29
+[DEBUG] Sending LAST FEC pkt with seqnum: 0
+[DEBUG] A timer of -> 30000ms <- has started after sending the last PTYPE_DATA pkt !
+[DEBUG] The pkt with seqnum: 1 has timeout
+[DEBUG] Sending the pkt with seqnum: 1
+[DEBUG] The sender is reading from the socket.
+[DEBUG] The ACK with the seqnum: 2 has been received
+[DEBUG] The sender is cumulatively acknowledging [1 : 2[ (place in the buffer) | [1, 2[ (seqnum)
+[DEBUG] Sender disconnected
+[DEBUG] Wrote the transfer statistics to tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv.
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log
index 2aea21b1d26c2f8b7a81d8704bfa5fb3d89cd01b..3aa67698b34710c288dfc24293fa725422001671 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_receiver.log
@@ -1,15 +1,15 @@
-==38465== Memcheck, a memory error detector
-==38465== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==38465== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==38465== Command: ./receiver ::1 65008 -s tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
-==38465== Parent PID: 38434
-==38465== 
-==38465== 
-==38465== HEAP SUMMARY:
-==38465==     in use at exit: 0 bytes in 0 blocks
-==38465==   total heap usage: 13 allocs, 13 frees, 9,872 bytes allocated
-==38465== 
-==38465== All heap blocks were freed -- no leaks are possible
-==38465== 
-==38465== For lists of detected and suppressed errors, rerun with: -s
-==38465== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==45956== Memcheck, a memory error detector
+==45956== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==45956== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==45956== Command: ./receiver ::1 65185 -s tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
+==45956== Parent PID: 45925
+==45956== 
+==45956== 
+==45956== HEAP SUMMARY:
+==45956==     in use at exit: 0 bytes in 0 blocks
+==45956==   total heap usage: 14 allocs, 14 frees, 10,400 bytes allocated
+==45956== 
+==45956== All heap blocks were freed -- no leaks are possible
+==45956== 
+==45956== For lists of detected and suppressed errors, rerun with: -s
+==45956== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log
index 4d771618c20aa2f73b97687f711970ca5f24021c..08c68949a8b0d8d2ce66b66a2c680521dac20420 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log
+++ b/tests_logs/advanced_tests/greeting/with_FEC/adv_valgrind_greeting_sender.log
@@ -1,29 +1,15 @@
-==38466== Memcheck, a memory error detector
-==38466== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==38466== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==38466== Command: ./sender -f tests_files/greeting.txt ::1 65074 -c -s tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
-==38466== Parent PID: 38434
-==38466== 
-==38466== 
-==38466== HEAP SUMMARY:
-==38466==     in use at exit: 536 bytes in 2 blocks
-==38466==   total heap usage: 11 allocs, 9 frees, 884 bytes allocated
-==38466== 
-==38466== 512 bytes in 1 blocks are definitely lost in loss record 2 of 2
-==38466==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
-==38466==    by 0x10AE2F: pkt_set_payload (packet_implem.c:313)
-==38466==    by 0x1098A8: append_to_fec_pkt (sender.c:124)
-==38466==    by 0x10A44E: read_write_loop_sender (sender.c:449)
-==38466==    by 0x109559: main (sender.c:560)
-==38466== 
-==38466== LEAK SUMMARY:
-==38466==    definitely lost: 512 bytes in 1 blocks
-==38466==    indirectly lost: 0 bytes in 0 blocks
-==38466==      possibly lost: 0 bytes in 0 blocks
-==38466==    still reachable: 24 bytes in 1 blocks
-==38466==         suppressed: 0 bytes in 0 blocks
-==38466== Reachable blocks (those to which a pointer was found) are not shown.
-==38466== To see them, rerun with: --leak-check=full --show-leak-kinds=all
-==38466== 
-==38466== For lists of detected and suppressed errors, rerun with: -s
-==38466== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+==45957== Memcheck, a memory error detector
+==45957== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==45957== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==45957== Command: ./sender -f tests_files/greeting.txt ::1 65108 -c -s tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
+==45957== Parent PID: 45925
+==45957== 
+==45957== 
+==45957== HEAP SUMMARY:
+==45957==     in use at exit: 0 bytes in 0 blocks
+==45957==   total heap usage: 10 allocs, 10 frees, 4,420 bytes allocated
+==45957== 
+==45957== All heap blocks were freed -- no leaks are possible
+==45957== 
+==45957== For lists of detected and suppressed errors, rerun with: -s
+==45957== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv b/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
index 396f1032f6857b496f16377151b1e6f9b99c243d..6ae5559548df3a9584e76a6cea152bb6142f4fdf 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
+++ b/tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
@@ -2,11 +2,11 @@ data_sent:0
 data_received:2
 data_truncated_received:0
 fec_sent:0
-fec_received:0
+fec_received:1
 ack_sent:2
 ack_received:0
 nack_received:0
 packet_ignored:0
-throughput:45.823387
+throughput:44.158234
 packet_duplicated:0
 packet_recovered:0
diff --git a/tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv b/tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ba4e155b55f307d3e5f496930d201812464ca416 100644
--- a/tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
+++ b/tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
@@ -0,0 +1,13 @@
+data_sent:3
+data_received:0
+data_truncated_received:0
+fec_sent:1
+fec_received:0
+ack_sent:0
+ack_received:2
+nack_received:0
+packet_ignored:0
+throughput:41.504539
+min_rtt:139
+max_rtt:2160
+packet_retransmitted:1
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log
index 651c26a63ef19850dcb6590158955c3bd596b95f..089c927b081523ba8aa8519c9e0fb38bfc0a94f4 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_link.log
@@ -1,22 +1,28 @@
-@@ Using random seed: 1650988955
+@@ Using random seed: 1650995765
 @@ Using parameters:
-.. port: 65068
-.. forward_port: 65085
+.. port: 65050
+.. forward_port: 65013
 .. delay: 100
 .. jitter: 100
 .. err_rate: 5
 .. cut_rate: 5
 .. loss_rate: 1
-.. seed: 1650988955
+.. seed: 1650995765
 .. link_direction: Forward
-@@ Remote host is ::1 [46889]
-[SEQ   0] Delayed packet by 20 ms
+@@ Remote host is ::1 [32846]
+[SEQ   0] Delayed packet by 133 ms
 [SEQ   0] Sent packet (Forward).
 [SEQ   1] Sent packet (Reverse).
-[SEQ   1] Delayed packet by 132 ms
-[SEQ   2] Delayed packet by 50 ms
-[SEQ   3] Delayed packet by 184 ms
-[SEQ   2] Sent packet (Forward).
+[SEQ   1] Delayed packet by 122 ms
+[SEQ   2] Delayed packet by 130 ms
 [SEQ   1] Sent packet (Forward).
+[SEQ   2] Sent packet (Reverse).
+[SEQ   2] Delayed packet by 194 ms
+[SEQ   2] Sent packet (Forward).
+[SEQ   3] Sent packet (Reverse).
+[SEQ   3] Delayed packet by 31 ms
+[FEC   0] Delayed packet by 149 ms
 [SEQ   3] Sent packet (Forward).
 [SEQ   4] Sent packet (Reverse).
+[FEC   0] Sent packet (Forward).
+[SEQ   2] Sent packet (Forward).
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log
index 807c84a77ad3237b8395a067def42195b76a4a0d..9fc5e6beb671f8df079e6148bc6e459400057024 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_receiver.log
@@ -1,19 +1,21 @@
-[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv, listen_ip is ::1, listen_port is 65085
-[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65085
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65068
-[DEBUG] Received data packet seqnum 0 with timestamp 1650988956 | current_window_size : 31, current_window_start : 0
+[DEBUG] Receiver has following arguments: stats_filename is tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv, listen_ip is ::1, listen_port is 65013
+[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65013
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65050
+[DEBUG] Received data packet seqnum 0 with timestamp 0 | current_window_size : 31, current_window_start : 0
 [DEBUG] Sent ACK saying we are waiting for 1, timestamp 0
-[DEBUG] Received data packet seqnum 2 with timestamp 1650988958 | current_window_size : 30, current_window_start : 0
-[DEBUG] Received data packet seqnum 1 with timestamp 1650988958 | current_window_size : 29, current_window_start : 0
-[DEBUG] Received data packet seqnum 3 with timestamp 1650988958 | current_window_size : 28, current_window_start : 0
+[DEBUG] Received data packet seqnum 1 with timestamp 0 | current_window_size : 30, current_window_start : 0
+[DEBUG] Sent ACK saying we are waiting for 2, timestamp 0
+[DEBUG] Received data packet seqnum 2 with timestamp 984824098 | current_window_size : 29, current_window_start : 0
+[DEBUG] Sent ACK saying we are waiting for 3, timestamp 0
+[DEBUG] Received data packet seqnum 3 with timestamp 0 | current_window_size : 28, current_window_start : 0
 [DEBUG] Going to consume the next 4 packets.
 [DEBUG] Consuming packet : 0 | curr_recv_window = 27, recv_window_start = 0
 [DEBUG] Consuming packet : 1 | curr_recv_window = 28, recv_window_start = 1
 [DEBUG] Consuming packet : 2 | curr_recv_window = 29, recv_window_start = 2
 [DEBUG] Consuming packet : 3 | curr_recv_window = 30, recv_window_start = 3
 [DEBUG] Received the last packet
-[DEBUG] Sent ACK saying we are waiting for 4, timestamp 1650988958
+[DEBUG] Sent ACK saying we are waiting for 4, timestamp 0
 [DEBUG] Done the transfer with done status being true
-[DEBUG] The difference between the two is 2200000.000000 seconds
-[DEBUG] The transfer took 2200.000000 seconds
+[DEBUG] The difference between the two is 189000.000000 seconds
+[DEBUG] The transfer took 189.000000 seconds
 [DEBUG] Wrote the transfer statistics to tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv.
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log
index aeab5b5f16a88bfd1007db626ccce3f0c2d2e32d..1c88cb018d7149e0dc6b01efa35b54cc99c6c9e1 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_long_message_sender.log
@@ -1,6 +1,36 @@
-[SEND] [Seq: 000, Win_Rec: 1, Len: 512] (ack)
-[RECV] [Seq: 001, Type: 2, len 0]
-[SEND] [Seq: 001, Win_Rec: 30, Len: 512] (ack)
-[SEND] [Seq: 002, Win_Rec: 30, Len: 486] (ack)
-[SEND] [Seq: 003, Win_Rec: 30, Len: 0] (ack)
-[RECV] [Seq: 004, Type: 2, len 0]
+[DEBUG] Sender has following arguments: 
+		filename is tests_files/long_message.txt,
+		stats_filename is tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv,
+		fec_enabled is 1,
+		receiver_ip is ::1,
+		receiver_port is 65050
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65050
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 31 | receiver window size: 1
+[DEBUG] Sending the pkt with seqnum: 0
+[DEBUG] The sender is reading from the socket.
+[DEBUG] The ACK with the seqnum: 1 has been received
+[DEBUG] The sender is cumulatively acknowledging [0 : 1[ (place in the buffer) | [0, 1[ (seqnum)
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 31 | receiver window size: 30
+[DEBUG] Sending the pkt with seqnum: 1
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 30 | receiver window size: 29
+[DEBUG] The LAST PTYPE_DATA is being sent !
+[DEBUG] Sending the pkt with seqnum: 2
+[DEBUG] The sender is reading from the socket.
+[DEBUG] The ACK with the seqnum: 2 has been received
+[DEBUG] The sender is cumulatively acknowledging [1 : 2[ (place in the buffer) | [1, 2[ (seqnum)
+[DEBUG] Sending the pkt with seqnum: 2
+[DEBUG] The sender is reading from the socket.
+[DEBUG] The ACK with the seqnum: 3 has been received
+[DEBUG] The sender is cumulatively acknowledging [2 : 3[ (place in the buffer) | [2, 3[ (seqnum)
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 31 | receiver window size: 28
+[DEBUG] The CLOSING pkt is being sent !
+[DEBUG] Sending the pkt with seqnum: 3
+[DEBUG] A timer of -> 30000ms <- has started after sending the last PTYPE_DATA pkt !
+[DEBUG] The sender will send a pkt on the socket, the current sender window size is: 30 | receiver window size: 27
+[DEBUG] Sending LAST FEC pkt with seqnum: 0
+[DEBUG] A timer of -> 30000ms <- has started after sending the last PTYPE_DATA pkt !
+[DEBUG] The sender is reading from the socket.
+[DEBUG] The ACK with the seqnum: 4 has been received
+[DEBUG] The sender is cumulatively acknowledging [3 : 4[ (place in the buffer) | [3, 4[ (seqnum)
+[DEBUG] Sender disconnected
+[DEBUG] Wrote the transfer statistics to tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv.
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log
index edbf717ddda04864f95f63954a8138b634b5fe79..e02530f248ae233b4525fa6a61d0ef9f9990c11e 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_receiver.log
@@ -1,15 +1,15 @@
-==38577== Memcheck, a memory error detector
-==38577== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==38577== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==38577== Command: ./receiver ::1 65085 -s tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
-==38577== Parent PID: 38547
-==38577== 
-==38577== 
-==38577== HEAP SUMMARY:
-==38577==     in use at exit: 0 bytes in 0 blocks
-==38577==   total heap usage: 17 allocs, 17 frees, 11,984 bytes allocated
-==38577== 
-==38577== All heap blocks were freed -- no leaks are possible
-==38577== 
-==38577== For lists of detected and suppressed errors, rerun with: -s
-==38577== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==46061== Memcheck, a memory error detector
+==46061== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==46061== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==46061== Command: ./receiver ::1 65013 -s tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
+==46061== Parent PID: 46031
+==46061== 
+==46061== 
+==46061== HEAP SUMMARY:
+==46061==     in use at exit: 0 bytes in 0 blocks
+==46061==   total heap usage: 19 allocs, 19 frees, 13,040 bytes allocated
+==46061== 
+==46061== All heap blocks were freed -- no leaks are possible
+==46061== 
+==46061== For lists of detected and suppressed errors, rerun with: -s
+==46061== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log
index 6d6986c8c1b1d206f42ced395137c61a1bca6296..a33ad24be9cb08fc940166e199de1d9e50462c79 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log
+++ b/tests_logs/advanced_tests/long_message/with_FEC/adv_valgrind_long_message_sender.log
@@ -1,29 +1,15 @@
-==38578== Memcheck, a memory error detector
-==38578== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==38578== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==38578== Command: ./sender -f tests_files/long_message.txt ::1 65068 -c -s tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
-==38578== Parent PID: 38547
-==38578== 
-==38578== 
-==38578== HEAP SUMMARY:
-==38578==     in use at exit: 536 bytes in 2 blocks
-==38578==   total heap usage: 17 allocs, 15 frees, 3,954 bytes allocated
-==38578== 
-==38578== 512 bytes in 1 blocks are definitely lost in loss record 2 of 2
-==38578==    at 0x483B7F3: malloc (in /usr/lib/x86_64-linux-gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
-==38578==    by 0x10AE2F: pkt_set_payload (packet_implem.c:313)
-==38578==    by 0x1098A8: append_to_fec_pkt (sender.c:124)
-==38578==    by 0x10A44E: read_write_loop_sender (sender.c:449)
-==38578==    by 0x109559: main (sender.c:560)
-==38578== 
-==38578== LEAK SUMMARY:
-==38578==    definitely lost: 512 bytes in 1 blocks
-==38578==    indirectly lost: 0 bytes in 0 blocks
-==38578==      possibly lost: 0 bytes in 0 blocks
-==38578==    still reachable: 24 bytes in 1 blocks
-==38578==         suppressed: 0 bytes in 0 blocks
-==38578== Reachable blocks (those to which a pointer was found) are not shown.
-==38578== To see them, rerun with: --leak-check=full --show-leak-kinds=all
-==38578== 
-==38578== For lists of detected and suppressed errors, rerun with: -s
-==38578== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
+==46062== Memcheck, a memory error detector
+==46062== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==46062== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==46062== Command: ./sender -f tests_files/long_message.txt ::1 65050 -c -s tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
+==46062== Parent PID: 46031
+==46062== 
+==46062== 
+==46062== HEAP SUMMARY:
+==46062==     in use at exit: 0 bytes in 0 blocks
+==46062==   total heap usage: 14 allocs, 14 frees, 6,532 bytes allocated
+==46062== 
+==46062== All heap blocks were freed -- no leaks are possible
+==46062== 
+==46062== For lists of detected and suppressed errors, rerun with: -s
+==46062== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv b/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
index 58c8056b572dc3faaf3e7ff0542ffe13fbc08791..844dfb8bf76790389712f3154f1c14f5a38f76cc 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
+++ b/tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
@@ -3,10 +3,10 @@ data_received:4
 data_truncated_received:0
 fec_sent:0
 fec_received:0
-ack_sent:2
+ack_sent:4
 ack_received:0
 nack_received:0
 packet_ignored:0
-throughput:5490.909180
+throughput:63915.343750
 packet_duplicated:0
 packet_recovered:0
diff --git a/tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv b/tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3c2832c776b567b90b660e468f68bdf45c71462c 100644
--- a/tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
+++ b/tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
@@ -0,0 +1,13 @@
+data_sent:5
+data_received:0
+data_truncated_received:0
+fec_sent:1
+fec_received:0
+ack_sent:0
+ack_received:4
+nack_received:0
+packet_ignored:0
+throughput:34812.679688
+min_rtt:45
+max_rtt:154
+packet_retransmitted:1