diff --git a/performance_results/average/output.gif b/performance_results/average/output.gif
index 2942ee0c8b96fc9f0a57718e07d3fb27f907ab1d..0874df62f38f32e74b633190349fa684a1318e71 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..5382d13ba1a7404bfa228786fa6dec5b02e24cc2 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:4662
+data_truncated_received:10
+fec_sent:0
+fec_received:1003
+ack_sent:1985
+ack_received:0
+nack_received:0
+packet_ignored:876
+throughput:46136.687500
+packet_duplicated:378
+packet_recovered:242
diff --git a/performance_results/average/receiver_1_without_FEC.csv b/performance_results/average/receiver_1_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..b712223547a3b84dc1dd6b0ab9862d1b2708eb13
--- /dev/null
+++ b/performance_results/average/receiver_1_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4854
+data_truncated_received:9
+fec_sent:0
+fec_received:0
+ack_sent:2639
+ack_received:0
+nack_received:0
+packet_ignored:709
+throughput:33973.156250
+packet_duplicated:328
+packet_recovered:0
diff --git a/performance_results/average/receiver_2_with_FEC.csv b/performance_results/average/receiver_2_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..de5a557be4aca2020eb7678d8c9894759e2f2bc3
--- /dev/null
+++ b/performance_results/average/receiver_2_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4596
+data_truncated_received:4
+fec_sent:0
+fec_received:968
+ack_sent:1771
+ack_received:0
+nack_received:0
+packet_ignored:823
+throughput:52781.429688
+packet_duplicated:317
+packet_recovered:247
diff --git a/performance_results/average/receiver_2_without_FEC.csv b/performance_results/average/receiver_2_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0b817fc4cff0eb5d0c740bdfcb3f479926415600
--- /dev/null
+++ b/performance_results/average/receiver_2_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4969
+data_truncated_received:11
+fec_sent:0
+fec_received:0
+ack_sent:3128
+ack_received:0
+nack_received:0
+packet_ignored:747
+throughput:27610.125000
+packet_duplicated:443
+packet_recovered:0
diff --git a/performance_results/average/receiver_3_with_FEC.csv b/performance_results/average/receiver_3_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..0988ac54cbfe823ee41ba71c72b3140ce42aac56
--- /dev/null
+++ b/performance_results/average/receiver_3_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4560
+data_truncated_received:10
+fec_sent:0
+fec_received:1000
+ack_sent:1622
+ack_received:0
+nack_received:0
+packet_ignored:797
+throughput:54313.257812
+packet_duplicated:292
+packet_recovered:258
diff --git a/performance_results/average/receiver_3_without_FEC.csv b/performance_results/average/receiver_3_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..7ce87f80a851862fe65a1425612040688b946ec7
--- /dev/null
+++ b/performance_results/average/receiver_3_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4934
+data_truncated_received:9
+fec_sent:0
+fec_received:0
+ack_sent:3028
+ack_received:0
+nack_received:0
+packet_ignored:735
+throughput:28141.064453
+packet_duplicated:408
+packet_recovered:0
diff --git a/performance_results/average/sender_1_with_FEC.csv b/performance_results/average/sender_1_with_FEC.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..1bf7bf2ea12f2d6b48dd96ec753e473128bebc0a 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:6527
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:1985
+nack_received:10
+packet_ignored:0
+throughput:46097.210938
+min_rtt:303
+max_rtt:8989
+packet_retransmitted:2001
diff --git a/performance_results/average/sender_1_without_FEC.csv b/performance_results/average/sender_1_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..d5bf920cce373a6b20f2bf2fe392cbf0e115966d
--- /dev/null
+++ b/performance_results/average/sender_1_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:7187
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:2639
+nack_received:9
+packet_ignored:0
+throughput:33948.570312
+min_rtt:303
+max_rtt:8520
+packet_retransmitted:2661
diff --git a/performance_results/average/sender_2_with_FEC.csv b/performance_results/average/sender_2_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e0189726134924e161e24993ce1b2af8c87a6c13
--- /dev/null
+++ b/performance_results/average/sender_2_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:6304
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:1771
+nack_received:4
+packet_ignored:0
+throughput:52733.964844
+min_rtt:100
+max_rtt:11413
+packet_retransmitted:1778
diff --git a/performance_results/average/sender_2_without_FEC.csv b/performance_results/average/sender_2_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..22b779ed0b8d44ca6d8cee5573aa6d409df51d8d
--- /dev/null
+++ b/performance_results/average/sender_2_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:7677
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:3128
+nack_received:11
+packet_ignored:0
+throughput:27597.212891
+min_rtt:303
+max_rtt:10908
+packet_retransmitted:3151
diff --git a/performance_results/average/sender_3_with_FEC.csv b/performance_results/average/sender_3_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..369252c46e50f77e7ce7eb19e7fc19f299711e7b
--- /dev/null
+++ b/performance_results/average/sender_3_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:6167
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:1622
+nack_received:10
+packet_ignored:0
+throughput:54260.140625
+min_rtt:303
+max_rtt:13231
+packet_retransmitted:1641
diff --git a/performance_results/average/sender_3_without_FEC.csv b/performance_results/average/sender_3_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..a48ba4933460c9f9ea65c3601358b32ed5dcd979
--- /dev/null
+++ b/performance_results/average/sender_3_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:7575
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:3028
+nack_received:9
+packet_ignored:0
+throughput:28128.892578
+min_rtt:303
+max_rtt:11110
+packet_retransmitted:3049
diff --git a/performance_results/average/sender_merged_stats.csv b/performance_results/average/sender_merged_stats.csv
new file mode 100644
index 0000000000000000000000000000000000000000..598ba3372ba6ea742ee03181ee7899e3290ed0d0
--- /dev/null
+++ b/performance_results/average/sender_merged_stats.csv
@@ -0,0 +1,7 @@
+data_sent,data_received,data_truncated_received,fec_sent,fec_received,ack_sent,ack_received,nack_received,packet_ignored,throughput,min_rtt,max_rtt,packet_retransmitted,fec
+7496.0,0.0,0.0,0.0,0.0,0.0,2947.0,8.0,0.0,29124.753906,303.0,10605.0,2970.0,0
+6378.0,0.0,0.0,1132.0,0.0,0.0,1841.0,7.0,0.0,47956.417969,100.0,8787.0,1852.0,1
+6304.0,0.0,0.0,1132.0,0.0,0.0,1771.0,4.0,0.0,52733.964844,100.0,11413.0,1778.0,1
+7677.0,0.0,0.0,0.0,0.0,0.0,3128.0,11.0,0.0,27597.212891,303.0,10908.0,3151.0,0
+7575.0,0.0,0.0,0.0,0.0,0.0,3028.0,9.0,0.0,28128.892578,303.0,11110.0,3049.0,0
+6167.0,0.0,0.0,1132.0,0.0,0.0,1622.0,10.0,0.0,54260.140625,303.0,13231.0,1641.0,1
diff --git a/performance_results/ideal/output.gif b/performance_results/ideal/output.gif
index 6a7c0298094a0ca68dea8a9aa427ac3863af3636..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
Binary files a/performance_results/ideal/output.gif and b/performance_results/ideal/output.gif differ
diff --git a/performance_results/ideal/receiver_1_with_FEC.csv b/performance_results/ideal/receiver_1_with_FEC.csv
index bf5fcbd36cf6b677ca42a79e4155ce447a52d91d..7be540da0192ac0560ca41d8bfa74abe5c123cb0 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:4362
+data_received:4356
 data_truncated_received:0
 fec_sent:0
-fec_received:611
+fec_received:625
 ack_sent:167
 ack_received:0
 nack_received:0
-packet_ignored:94
-throughput:1105010.875000
-packet_duplicated:5
-packet_recovered:169
+packet_ignored:72
+throughput:1104681.500000
+packet_duplicated:8
+packet_recovered:178
diff --git a/performance_results/ideal/receiver_1_without_FEC.csv b/performance_results/ideal/receiver_1_without_FEC.csv
index 41b5c74967e2cff179652a186406042b275a14d2..dd3f5c187d56999eb0df97c3d0e545473113d4f5 100644
--- a/performance_results/ideal/receiver_1_without_FEC.csv
+++ b/performance_results/ideal/receiver_1_without_FEC.csv
@@ -3,10 +3,10 @@ data_received:4526
 data_truncated_received:0
 fec_sent:0
 fec_received:0
-ack_sent:216
+ack_sent:239
 ack_received:0
 nack_received:0
-packet_ignored:50
-throughput:853139.000000
+packet_ignored:54
+throughput:770617.187500
 packet_duplicated:0
 packet_recovered:0
diff --git a/performance_results/ideal/receiver_2_with_FEC.csv b/performance_results/ideal/receiver_2_with_FEC.csv
index d2a70d7e2cb3d4fe380aa9ebb8ba8571a064218b..0accf5f7565d7c9c1ae8dc86a15bc1efd457aad5 100644
--- a/performance_results/ideal/receiver_2_with_FEC.csv
+++ b/performance_results/ideal/receiver_2_with_FEC.csv
@@ -2,11 +2,11 @@ data_sent:0
 data_received:4370
 data_truncated_received:0
 fec_sent:0
-fec_received:589
-ack_sent:169
+fec_received:571
+ack_sent:164
 ack_received:0
 nack_received:0
-packet_ignored:76
-throughput:1091987.750000
-packet_duplicated:11
-packet_recovered:167
+packet_ignored:75
+throughput:1125480.250000
+packet_duplicated:10
+packet_recovered:166
diff --git a/performance_results/ideal/receiver_2_without_FEC.csv b/performance_results/ideal/receiver_2_without_FEC.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..d51502c5b0f3cf50cca5201beb55a5dacf5dd9bb 100644
--- a/performance_results/ideal/receiver_2_without_FEC.csv
+++ b/performance_results/ideal/receiver_2_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4526
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:212
+ack_received:0
+nack_received:0
+packet_ignored:36
+throughput:869430.062500
+packet_duplicated:0
+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..7ed4fdbacab9be9fcab272a1a98af2a5a4230981
--- /dev/null
+++ b/performance_results/ideal/receiver_3_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4355
+data_truncated_received:0
+fec_sent:0
+fec_received:633
+ack_sent:170
+ack_received:0
+nack_received:0
+packet_ignored:87
+throughput:1085527.000000
+packet_duplicated:10
+packet_recovered:181
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..8b3dadb8e13ede24dd51fd87ddecefe8b95a5bc7
--- /dev/null
+++ b/performance_results/ideal/receiver_3_without_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:4526
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:228
+ack_received:0
+nack_received:0
+packet_ignored:54
+throughput:808156.625000
+packet_duplicated:0
+packet_recovered:0
diff --git a/performance_results/ideal/sender_1_with_FEC.csv b/performance_results/ideal/sender_1_with_FEC.csv
index ac47dab81e5d8079a4c8dee6449f4d1682a073dd..b21f17f76f15a4efb2c39ea65b179b5c1016c293 100644
--- a/performance_results/ideal/sender_1_with_FEC.csv
+++ b/performance_results/ideal/sender_1_with_FEC.csv
@@ -1,4 +1,4 @@
-data_sent:4586
+data_sent:4571
 data_received:0
 data_truncated_received:0
 fec_sent:1132
@@ -7,7 +7,7 @@ ack_sent:0
 ack_received:167
 nack_received:0
 packet_ignored:0
-throughput:1098265.500000
-min_rtt:100
-max_rtt:404
-packet_retransmitted:60
+throughput:1097940.000000
+min_rtt:95
+max_rtt:505
+packet_retransmitted:45
diff --git a/performance_results/ideal/sender_1_without_FEC.csv b/performance_results/ideal/sender_1_without_FEC.csv
index 3b6d85e734159331bfeb7948c2d3dccba61a75db..5f64637a588f9c32721d2fe162e35433432e76b7 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:4664
+data_sent:4692
 data_received:0
 data_truncated_received:0
 fec_sent:0
 fec_received:0
 ack_sent:0
-ack_received:216
+ack_received:239
 nack_received:0
 packet_ignored:0
-throughput:849190.312500
-min_rtt:99
-max_rtt:505
-packet_retransmitted:138
+throughput:767362.312500
+min_rtt:95
+max_rtt:707
+packet_retransmitted:166
diff --git a/performance_results/ideal/sender_2_with_FEC.csv b/performance_results/ideal/sender_2_with_FEC.csv
index dd17714741ba211d2d81d81cd4fbfa06fc8c5161..7b1fe4f0addd46898ca9df6f2e62ebc809da04be 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:4586
+data_sent:4578
 data_received:0
 data_truncated_received:0
 fec_sent:1132
 fec_received:0
 ack_sent:0
-ack_received:169
+ack_received:164
 nack_received:0
 packet_ignored:0
-throughput:1085463.375000
-min_rtt:98
+throughput:1118483.250000
+min_rtt:99
 max_rtt:404
-packet_retransmitted:60
+packet_retransmitted:52
diff --git a/performance_results/ideal/sender_2_without_FEC.csv b/performance_results/ideal/sender_2_without_FEC.csv
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ef856167060f14d2a6c905e6b808b9d7dae6407a 100644
--- a/performance_results/ideal/sender_2_without_FEC.csv
+++ b/performance_results/ideal/sender_2_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:4653
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:212
+nack_received:0
+packet_ignored:0
+throughput:791417.125000
+min_rtt:101
+max_rtt:2104
+packet_retransmitted:127
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..e1160b0c41f2fc7267eafcdfc123640f2df1cb9c
--- /dev/null
+++ b/performance_results/ideal/sender_3_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:4591
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:170
+nack_received:0
+packet_ignored:0
+throughput:1079016.625000
+min_rtt:97
+max_rtt:505
+packet_retransmitted:65
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..558af214184be3d4083e09e56ba04098e8b5cc61
--- /dev/null
+++ b/performance_results/ideal/sender_3_without_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:4675
+data_received:0
+data_truncated_received:0
+fec_sent:0
+fec_received:0
+ack_sent:0
+ack_received:228
+nack_received:0
+packet_ignored:0
+throughput:804577.625000
+min_rtt:92
+max_rtt:707
+packet_retransmitted:149
diff --git a/performance_results/ideal/sender_merged_stats.csv b/performance_results/ideal/sender_merged_stats.csv
new file mode 100644
index 0000000000000000000000000000000000000000..f3f3886b3318b8f83a74c9aa141ae1945928656a
--- /dev/null
+++ b/performance_results/ideal/sender_merged_stats.csv
@@ -0,0 +1,7 @@
+data_sent,data_received,data_truncated_received,fec_sent,fec_received,ack_sent,ack_received,nack_received,packet_ignored,throughput,min_rtt,max_rtt,packet_retransmitted,fec
+4653.0,0.0,0.0,0.0,0.0,0.0,210.0,0.0,0.0,737348.0625,101.0,4023.0,127.0,0
+4578.0,0.0,0.0,1132.0,0.0,0.0,163.0,0.0,0.0,1125480.25,101.0,404.0,52.0,1
+4581.0,0.0,0.0,1132.0,0.0,0.0,167.0,0.0,0.0,982088.75,101.0,2103.0,55.0,1
+4648.0,0.0,0.0,0.0,0.0,0.0,203.0,0.0,0.0,823381.8125,101.0,2104.0,122.0,0
+4695.0,0.0,0.0,0.0,0.0,0.0,240.0,0.0,0.0,706132.375,101.0,2104.0,169.0,0
+4581.0,0.0,0.0,1132.0,0.0,0.0,164.0,0.0,0.0,998116.5625,101.0,2103.0,55.0,1
diff --git a/performance_results/worst/output.gif b/performance_results/worst/output.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7589650977f6213bf9d11c944232279f513726fc
Binary files /dev/null and b/performance_results/worst/output.gif differ
diff --git a/performance_results/worst/receiver_1_with_FEC.csv b/performance_results/worst/receiver_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..aaaa76a53ddb4f72242d8b652bfd239fd09f28d7
--- /dev/null
+++ b/performance_results/worst/receiver_1_with_FEC.csv
@@ -0,0 +1,12 @@
+data_sent:0
+data_received:5582
+data_truncated_received:4
+fec_sent:0
+fec_received:861
+ack_sent:5907
+ack_received:0
+nack_received:0
+packet_ignored:1561
+throughput:3052.714844
+packet_duplicated:1167
+packet_recovered:111
diff --git a/performance_results/worst/receiver_1_without_FEC.csv b/performance_results/worst/receiver_1_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/worst/sender_1_with_FEC.csv b/performance_results/worst/sender_1_with_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..b081c6fc339de61669c7dafda10b6bcab203063c
--- /dev/null
+++ b/performance_results/worst/sender_1_with_FEC.csv
@@ -0,0 +1,13 @@
+data_sent:10656
+data_received:0
+data_truncated_received:0
+fec_sent:1132
+fec_received:0
+ack_sent:0
+ack_received:5907
+nack_received:4
+packet_ignored:0
+throughput:3051.964600
+min_rtt:1313
+max_rtt:1217177
+packet_retransmitted:6130
diff --git a/performance_results/worst/sender_1_without_FEC.csv b/performance_results/worst/sender_1_without_FEC.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/performance_results/worst/sender_merged_stats.csv b/performance_results/worst/sender_merged_stats.csv
new file mode 100644
index 0000000000000000000000000000000000000000..5f01ace2d2f13748b6400608b0aaa34ad19969ac
--- /dev/null
+++ b/performance_results/worst/sender_merged_stats.csv
@@ -0,0 +1,2 @@
+fec
+1
diff --git a/src/sender_utils.c b/src/sender_utils.c
index cc8e8b53dd8575c74d1ed8bd183a6726a408868a..c3f75bc63fe3af186d49fb1b459b189769d162dc 100644
--- a/src/sender_utils.c
+++ b/src/sender_utils.c
@@ -29,6 +29,7 @@ sender_state_t *state_new(bool fec_enabled)
         state->FEC_nbr = 0;
     }
     state->stats = calloc(sizeof(transfer_stats_t), 1);
+    state->stats->avg_rtt = 1;  // Has to be initiated at 1
     return state;
 }
 
@@ -192,9 +193,18 @@ int handle_returning_ack_nack(sender_state_t *state, int socket_fd)
             // A do while is necessary here in case we want to make a full revolution (ack from 1 to 1 not included for example)
             do 
             {
+                
                 struct timeval time;
                 gettimeofday(&time, NULL);
                 unsigned long long int delta_time = time_milliseconds(&time) - time_milliseconds(&state->timers_first_send[state->tail]);
+
+                float used_for_calculation = state->stats->avg_rtt * (state->nbr_of_acked_packets);
+                used_for_calculation += delta_time;
+                state->nbr_of_acked_packets++;
+                used_for_calculation /= state->nbr_of_acked_packets;
+
+                state->stats->avg_rtt = used_for_calculation;
+                
                 if (state->stats->min_rtt == 0 || state->stats->min_rtt > delta_time)
                 {
                     state->stats->min_rtt = delta_time;
@@ -213,6 +223,7 @@ int handle_returning_ack_nack(sender_state_t *state, int socket_fd)
                 
                 state->s_window_size++;
                 state->tail = (state->tail + 1) % WINDOW_SIZE;
+                
             } while (state->tail != upper_bound);
 
             // Send back the asked ACK if there is one to send back
@@ -235,8 +246,12 @@ int checking_timer(sender_state_t *state, int socket_fd)
     {
         gettimeofday(&time, NULL);
         // When the timer is over, we send the packet back
-        if ((time_milliseconds(&time) - time_milliseconds(&state->timers[state->tail])) >= TIMER_LIMIT)
+        float retransmission =  (state->stats->min_rtt > 0 ? 2 * state->stats->min_rtt : 2000);
+        retransmission       += (state->stats->avg_rtt - state->stats->min_rtt)/2;
+        
+        if ((time_milliseconds(&time) - time_milliseconds(&state->timers[state->tail])) >= retransmission)
         {
+            DEBUG("The current average rtt %lld ms, retransmitted after %f ms", state->stats->avg_rtt,retransmission);
             state->stats->packet_retransmitted++;
             pkt_t *pkt = state->buffer[state->tail];
             DEBUG("The pkt with seqnum: %d has timeout", pkt_get_seqnum(pkt));
diff --git a/src/sender_utils.h b/src/sender_utils.h
index 84510b853ed53c4b167bda784a3dfb6d2aad3ad3..22d7fe6ca1bf3b77482d0f533a923a18516d4736 100644
--- a/src/sender_utils.h
+++ b/src/sender_utils.h
@@ -54,6 +54,7 @@ typedef struct state {
     transfer_stats_t *stats;
     struct timeval start_of_the_connection; // Time when the very first pkt was sent
     unsigned long long int nbr_of_sended_bytes;
+    unsigned long long int nbr_of_acked_packets;
 } sender_state_t;
 
 
diff --git a/src/utils.h b/src/utils.h
index 9fd0cf15dbf0d2f1ca4f0fa571f6ab8ad2754dfb..6659d4991b0c4e7e26da0ce5062eb2a566ce55c6 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -34,6 +34,7 @@ typedef struct __attribute__((__packed__))
     unsigned long long int packet_duplicated;
     unsigned long long int packet_recovered;
     unsigned long long int min_rtt;
+    unsigned long long int avg_rtt;
     unsigned long long int max_rtt;
     unsigned long long int packet_retransmitted;
     float throughput; // Measure in bits per seconds
diff --git a/tests/advanced_test.sh b/tests/advanced_test.sh
index b657f66577e28d7007d1717d3d29c405147efe1f..0559a0a972ad85f35c564e156b2bb823f55fa62a 100755
--- a/tests/advanced_test.sh
+++ b/tests/advanced_test.sh
@@ -27,10 +27,10 @@ MODES=(
   'without_FEC'
 )
 
-ERROR_RATE=5
-CUT_RATE=5
-DELAY=100
-JITTER=100
+ERROR_RATE=10
+CUT_RATE=1
+DELAY=290
+JITTER=30
 LOSS_RATE=1 
 
 echo -e "The linksimulator paramateres are:
diff --git a/tests/perfomance_test.sh b/tests/perfomance_test.sh
index 50cf19f5417d5e807a8d0879cf1ccabe04495354..f08771c52291a32188c2eb747ab728ca88dace48 100755
--- a/tests/perfomance_test.sh
+++ b/tests/perfomance_test.sh
@@ -42,8 +42,18 @@ for ITER in 1 2 3; do
 
     # The next 2 lines come from: https://unix.stackexchange.com/questions/55913/whats-the-easiest-way-to-find-an-unused-local-port
     # We use this to be sure we're using unused port
-    port1=$(comm -23 <(seq 65000 65200 | sort) <(ss -Htan | awk '{print $4}' | cut -d':' -f2 | sort -u) | shuf | head -n 1)
-    port2=$(comm -23 <(seq 65000 65200 | sort) <(ss -Htan | awk '{print $4}' | cut -d':' -f2 | sort -u) | shuf | head -n 1)
+
+    # $(comm -23 <(seq 65000 65200 | sort) <(ss -Htan | awk '{print $4}' | cut -d':' -f2 | sort -u) | shuf | head -n 1)
+    port1=65047
+    # $(comm -23 <(seq 65000 65200 | sort) <(ss -Htan | awk '{print $4}' | cut -d':' -f2 | sort -u) | shuf | head -n 1)
+    port2=65042
+
+    fuser -k $port1/udp  # Kill processes using these ports
+    fuser -k $port2/udp  # Kill processes using these ports
+
+    sleep 5
+
+    echo "The chosen ports are port1:${port1} port2:${port2}"
 
     #####   Launching the link simulator   #####
     ./linksimulator/link_sim -p $port2 -P $port1 -l ${LOSS_RATE} -d ${DELAY} -e ${ERROR_RATE} -c ${CUT_RATE} -j ${JITTER} \
@@ -75,7 +85,7 @@ for ITER in 1 2 3; do
       fi
     fi
 
-    sleep 20 # We wait 20s for the receiver to finish up
+    sleep 5 # We wait 5s for the receiver to finish up
 
     if kill -0 $receiver_pid &> /dev/null ; then
       echo "The receiver didn't stop at the end of the transfer!"
@@ -91,13 +101,13 @@ for ITER in 1 2 3; do
 
     # Stop the link simulator
     kill -9 $link_pid
-    wait $link_pid 2>/dev/null
+    wait $link_pid 2> /dev/null
 
     # We verify that the transfer ran through properly
     if [[ "$(md5sum ${FILENAME} | awk '{print $1}')" != "$(md5sum ${OUTPUT} | awk '{print $1}')" ]]; then
       echo "The transfer corrupted the file!"
       echo "Binary difference between the 2 files: (expected vs actual)"
-      diff -C 9 <(od -Ax -t x1z ${FILENAME}) <(od -Ax -t x1z ${OUTPUT})
+      # diff -C 9 <(od -Ax -t x1z ${FILENAME}) <(od -Ax -t x1z ${OUTPUT})
       if [ $MODE = "with_FEC" ]; then
         echo -e "${RED}The transfer (with FEC) has failed!${NC}"
       else
@@ -111,6 +121,8 @@ for ITER in 1 2 3; do
         echo -e "${GREEN}The transfer (without FEC) at ${ITER} iteration has succeeded!${NC}"
       fi
     fi
+
+    fuser -k $port1/udp
+    fuser -k $port2/udp
   done
 done
-exit ${err:-0}  # In case of error, we return the error code
\ No newline at end of file
diff --git a/tests/run_tests.sh b/tests/run_tests.sh
index e3317a9a2a1b760f5bd31b05013337a5b27fa908..88646db822a003aca50cba46ae9d8d4fb11a917e 100755
--- a/tests/run_tests.sh
+++ b/tests/run_tests.sh
@@ -27,6 +27,7 @@ simple_test_files=(
 advanced_test_files=(
   'tests_files/greeting.txt'
   'tests_files/long_message.txt'
+  'tests_files/thumbs-up-nod.gif'
   'tests_files/noice.gif'
 )
 
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 211b3161b870ad78d5330197481af3e3227f5708..6c99f122337d2a473c05c82f7054bd06ee0ff0ae 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,20 +1,20 @@
-@@ Using random seed: 1651002406
+@@ Using random seed: 1651061140
 @@ Using parameters:
-.. port: 65103
-.. forward_port: 65021
-.. delay: 100
-.. jitter: 100
-.. err_rate: 5
-.. cut_rate: 5
+.. port: 65098
+.. forward_port: 65168
+.. delay: 290
+.. jitter: 30
+.. err_rate: 10
+.. cut_rate: 1
 .. loss_rate: 1
-.. seed: 1651002406
+.. seed: 1651061140
 .. link_direction: Forward
-@@ Remote host is ::1 [57439]
-[SEQ   0] Delayed packet by 147 ms
+@@ Remote host is ::1 [59029]
+[SEQ   0] Delayed packet by 262 ms
 [SEQ   0] Sent packet (Forward).
 [SEQ   1] Sent packet (Reverse).
-[SEQ   1] Delayed packet by 181 ms
-[FEC   0] Delayed packet by 90 ms
-[FEC   0] Sent packet (Forward).
+[SEQ   1] Delayed packet by 278 ms
+[FEC   0] Delayed packet by 310 ms
 [SEQ   1] Sent packet (Forward).
+[FEC   0] 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 0fe877ab13e6879034e765cebb1e30bcac9fe658..2fb3bb0f73b9506f5ee7416841e418d1489d11c6 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,16 +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 65021
-[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65021
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65103
+[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 65168
+[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65168
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65098
 [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 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] Received packet [0] Out of window with timestamp 0 | receive window start at : 2 (included) till 33 (excluded)
 [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 112000.000000 seconds
-[DEBUG] The transfer took 112.000000 seconds
+[DEBUG] The difference between the two is 387000.000000 seconds
+[DEBUG] The transfer took 387.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 b8565d9ad5c20b409de9b9da01902ff2897a66c7..54617556b6a0b52134340305958c405b51bdb386 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
@@ -3,8 +3,8 @@
 		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 65103
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65103
+		receiver_port is 65098
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65098
 [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
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 031e83cbcd913c7573b267016af03aa1fb73bb92..91f3c3f9f63d3de91041a10b4953b782c14a5e7c 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 @@
-==49510== Memcheck, a memory error detector
-==49510== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==49510== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==49510== Command: ./receiver ::1 65021 -s tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
-==49510== Parent PID: 49479
-==49510== 
-==49510== 
-==49510== HEAP SUMMARY:
-==49510==     in use at exit: 0 bytes in 0 blocks
-==49510==   total heap usage: 14 allocs, 14 frees, 10,400 bytes allocated
-==49510== 
-==49510== All heap blocks were freed -- no leaks are possible
-==49510== 
-==49510== For lists of detected and suppressed errors, rerun with: -s
-==49510== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==8962== Memcheck, a memory error detector
+==8962== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==8962== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==8962== Command: ./receiver ::1 65168 -s tests_logs/advanced_tests/greeting/with_FEC/greeting_receiver_stats.csv
+==8962== Parent PID: 8931
+==8962== 
+==8962== 
+==8962== HEAP SUMMARY:
+==8962==     in use at exit: 0 bytes in 0 blocks
+==8962==   total heap usage: 14 allocs, 14 frees, 10,408 bytes allocated
+==8962== 
+==8962== All heap blocks were freed -- no leaks are possible
+==8962== 
+==8962== For lists of detected and suppressed errors, rerun with: -s
+==8962== 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 d8dc7182e1c0047ca3a34de9d0e7cfcc0c439e51..1c6accad388e650827b4d4a7d2514bf270d129e2 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,15 +1,15 @@
-==49511== Memcheck, a memory error detector
-==49511== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==49511== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==49511== Command: ./sender -f tests_files/greeting.txt ::1 65103 -c -s tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
-==49511== Parent PID: 49479
-==49511== 
-==49511== 
-==49511== HEAP SUMMARY:
-==49511==     in use at exit: 0 bytes in 0 blocks
-==49511==   total heap usage: 10 allocs, 10 frees, 4,420 bytes allocated
-==49511== 
-==49511== All heap blocks were freed -- no leaks are possible
-==49511== 
-==49511== For lists of detected and suppressed errors, rerun with: -s
-==49511== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==8963== Memcheck, a memory error detector
+==8963== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==8963== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==8963== Command: ./sender -f tests_files/greeting.txt ::1 65098 -c -s tests_logs/advanced_tests/greeting/with_FEC/greeting_sender_stats.csv
+==8963== Parent PID: 8931
+==8963== 
+==8963== 
+==8963== HEAP SUMMARY:
+==8963==     in use at exit: 0 bytes in 0 blocks
+==8963==   total heap usage: 10 allocs, 10 frees, 4,436 bytes allocated
+==8963== 
+==8963== All heap blocks were freed -- no leaks are possible
+==8963== 
+==8963== For lists of detected and suppressed errors, rerun with: -s
+==8963== 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 618b0cae9875a7d074f5ee5b29dac9ce909d1d2f..cf56633a5ea4cfa21b81b2d9af8a384000e425f0 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:1
+fec_received:0
 ack_sent:2
 ack_received:0
 nack_received:0
 packet_ignored:0
-throughput:857.142883
+throughput:248.062012
 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 6ec9d3e316d14092a39bec662b6a8d30c6e2fee9..7c4b622682b749b8205488382247777ad9eabd3b 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
@@ -7,7 +7,7 @@ ack_sent:0
 ack_received:2
 nack_received:0
 packet_ignored:0
-throughput:351.648346
-min_rtt:103
-max_rtt:159
+throughput:141.384384
+min_rtt:298
+max_rtt:367
 packet_retransmitted:0
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 9657be4b9cc3d42ace6e8c8c967d96ebec55e327..3516204c017e836d890b945eeaed29216322eafa 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,30 +1,29 @@
-@@ Using random seed: 1651002418
+@@ Using random seed: 1651061153
 @@ Using parameters:
-.. port: 65073
-.. forward_port: 65075
-.. delay: 100
-.. jitter: 100
-.. err_rate: 5
-.. cut_rate: 5
+.. port: 65191
+.. forward_port: 65166
+.. delay: 290
+.. jitter: 30
+.. err_rate: 10
+.. cut_rate: 1
 .. loss_rate: 1
-.. seed: 1651002418
+.. seed: 1651061153
 .. link_direction: Forward
-@@ Remote host is ::1 [43801]
-[SEQ   0] Delayed packet by 10 ms
+@@ Remote host is ::1 [53701]
+[SEQ   0] Corrupting packet: inverted byte #327
+[SEQ   0] Delayed packet by 308 ms
+[SEQ   0] Sent packet (Forward).
+[SEQ   0] Delayed packet by 309 ms
 [SEQ   0] Sent packet (Forward).
 [SEQ   1] Sent packet (Reverse).
-[SEQ   1] Delayed packet by 58 ms
-[SEQ   2] Dropping packet
+[SEQ   1] Delayed packet by 265 ms
+[SEQ   2] Delayed packet by 283 ms
 [SEQ   1] Sent packet (Forward).
-[SEQ   2] Sent packet (Reverse).
-[SEQ   2] Corrupting packet: inverted byte #200
-[SEQ   2] Delayed packet by 150 ms
-[SEQ   2] Sent packet (Forward).
-[SEQ   2] Delayed packet by 43 ms
 [SEQ   2] Sent packet (Forward).
 [SEQ   3] Sent packet (Reverse).
-[SEQ   3] Delayed packet by 77 ms
-[FEC   0] Delayed packet by 159 ms
+[SEQ   3] Delayed packet by 270 ms
+[FEC   0] Corrupting packet: inverted byte #287
+[FEC   0] Delayed packet by 310 ms
 [SEQ   3] Sent packet (Forward).
-[SEQ   4] Sent packet (Reverse).
 [FEC   0] Sent packet (Forward).
+[SEQ   4] Sent packet (Reverse).
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 b081f12eea45d6c094651e69ff053a3a7d04fe3a..c55731e34b20ba2366d7b1ec7536eef15414a61f 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,11 +1,10 @@
-[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 65075
-[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65075
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65073
+[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 65166
+[DEBUG] Successfully bound to IPv6 address : 0000:0000:0000:0000:0000:0000:0000:0001, port : 65166
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65191
+[DEBUG] Received a damaged packet with 4 status. and seqnum as 0
 [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 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 a damaged packet with 4 status. and seqnum as 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
@@ -15,8 +14,9 @@
 [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] Received a damaged packet with 4 status. and seqnum as 0
 [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 2210000.000000 seconds
-[DEBUG] The transfer took 2210.000000 seconds
+[DEBUG] The difference between the two is 2597000.000000 seconds
+[DEBUG] The transfer took 2597.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 22fa5662f889605b65dc6e94cdc579e1d2e321b4..99077384440cc2025ad9129f3994e93e941b37bf 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
@@ -3,10 +3,13 @@
 		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 65073
-[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65073
+		receiver_port is 65191
+[DEBUG] Successfully connected to IPv6 addresss: 0000:0000:0000:0000:0000:0000:0000:0001, port : 65191
 [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 current average rtt 1 ms, retransmitted after 2000.000000 ms
+[DEBUG] The pkt with seqnum: 0 has timeout
+[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)
@@ -16,14 +19,8 @@
 [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 pkt with seqnum: 2 has timeout
-[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 is cumulatively acknowledging [1 : 3[ (place in the buffer) | [1, 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
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 5a8cff78548d0007caea8add976e01d3eb97921e..c7cb4282d0223206d31fa3139d948a40ebcac659 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 @@
-==49611== Memcheck, a memory error detector
-==49611== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==49611== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==49611== Command: ./receiver ::1 65075 -s tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
-==49611== Parent PID: 49581
-==49611== 
-==49611== 
-==49611== HEAP SUMMARY:
-==49611==     in use at exit: 0 bytes in 0 blocks
-==49611==   total heap usage: 20 allocs, 20 frees, 13,568 bytes allocated
-==49611== 
-==49611== All heap blocks were freed -- no leaks are possible
-==49611== 
-==49611== For lists of detected and suppressed errors, rerun with: -s
-==49611== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==9065== Memcheck, a memory error detector
+==9065== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==9065== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==9065== Command: ./receiver ::1 65166 -s tests_logs/advanced_tests/long_message/with_FEC/long_message_receiver_stats.csv
+==9065== Parent PID: 9035
+==9065== 
+==9065== 
+==9065== HEAP SUMMARY:
+==9065==     in use at exit: 0 bytes in 0 blocks
+==9065==   total heap usage: 20 allocs, 20 frees, 13,576 bytes allocated
+==9065== 
+==9065== All heap blocks were freed -- no leaks are possible
+==9065== 
+==9065== For lists of detected and suppressed errors, rerun with: -s
+==9065== 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 91555a1da1f18e1591dc96909e5a3c4c390cf56f..63a304e5ec9d24930ec03dffc4ab3f3ec8602ad8 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,15 +1,15 @@
-==49612== Memcheck, a memory error detector
-==49612== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
-==49612== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
-==49612== Command: ./sender -f tests_files/long_message.txt ::1 65073 -c -s tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
-==49612== Parent PID: 49581
-==49612== 
-==49612== 
-==49612== HEAP SUMMARY:
-==49612==     in use at exit: 0 bytes in 0 blocks
-==49612==   total heap usage: 14 allocs, 14 frees, 6,532 bytes allocated
-==49612== 
-==49612== All heap blocks were freed -- no leaks are possible
-==49612== 
-==49612== For lists of detected and suppressed errors, rerun with: -s
-==49612== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
+==9066== Memcheck, a memory error detector
+==9066== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==9066== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
+==9066== Command: ./sender -f tests_files/long_message.txt ::1 65191 -c -s tests_logs/advanced_tests/long_message/with_FEC/long_message_sender_stats.csv
+==9066== Parent PID: 9035
+==9066== 
+==9066== 
+==9066== HEAP SUMMARY:
+==9066==     in use at exit: 0 bytes in 0 blocks
+==9066==   total heap usage: 13 allocs, 13 frees, 6,020 bytes allocated
+==9066== 
+==9066== All heap blocks were freed -- no leaks are possible
+==9066== 
+==9066== For lists of detected and suppressed errors, rerun with: -s
+==9066== 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 330c1393f9483deeacdb0b8a186deae4e147ce3f..0b210b5b5d91da97103c4c5dacc8c3a36c3a3818 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:4
+ack_sent:3
 ack_received:0
 nack_received:0
-packet_ignored:1
-throughput:5466.063477
+packet_ignored:2
+throughput:4651.520996
 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 5dc3d81d49609f0f641845ed55e0c75b4b504d4f..2e635f624dabca5a85644a76303e388a795f1f0b 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
@@ -1,13 +1,13 @@
-data_sent:6
+data_sent:5
 data_received:0
 data_truncated_received:0
 fec_sent:1
 fec_received:0
 ack_sent:0
-ack_received:4
+ack_received:3
 nack_received:0
 packet_ignored:0
-throughput:5397.676758
-min_rtt:31
-max_rtt:2111
-packet_retransmitted:2
+throughput:4094.915283
+min_rtt:297
+max_rtt:2334
+packet_retransmitted:1