diff --git a/1-ProceduralProgramming/6b-hands-on.ipynb b/1-ProceduralProgramming/6b-hands-on.ipynb
index a5cd32a7ac4ed4a784225822db1fe09f6375e1e0..061a21ca60cdb65ffe2d7df37e3544d4bc6dc68e 100644
--- a/1-ProceduralProgramming/6b-hands-on.ipynb
+++ b/1-ProceduralProgramming/6b-hands-on.ipynb
@@ -14,7 +14,7 @@
    },
    "source": [
     "<h1>Table of contents<span class=\"tocSkip\"></span></h1>\n",
-    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#EXERCICE-8:-Multiplication-by-an-integer\" data-toc-modified-id=\"EXERCICE-8:-Multiplication-by-an-integer-1\"><strong>EXERCICE 8: Multiplication by an integer</strong></a></span></li><li><span><a href=\"#EXERCICE-9:-display-sum-of-two-Multiply\" data-toc-modified-id=\"EXERCICE-9:-display-sum-of-two-Multiply-2\">EXERCICE 9: display sum of two <code>Multiply</code></a></span></li><li><span><a href=\"#EXERCICE-10:-print-error-in-display_sum()\" data-toc-modified-id=\"EXERCICE-10:-print-error-in-display_sum()-3\"><strong>EXERCICE 10: print error in <code>display_sum()</code></strong></a></span></li><li><span><a href=\"#[optional]-EXERCICE-11:-function-pointers\" data-toc-modified-id=\"[optional]-EXERCICE-11:-function-pointers-4\">[optional] EXERCICE 11: function pointers</a></span></li><li><span><a href=\"#[optional]-EXERCICE-12:-write-in-output-file\" data-toc-modified-id=\"[optional]-EXERCICE-12:-write-in-output-file-5\">[optional] EXERCICE 12: write in output file</a></span></li></ul></div>"
+    "<div class=\"toc\"><ul class=\"toc-item\"><li><span><a href=\"#EXERCICE-8:-Multiplication-by-an-integer\" data-toc-modified-id=\"EXERCICE-8:-Multiplication-by-an-integer-1\"><strong>EXERCICE 8: Multiplication by an integer</strong></a></span></li><li><span><a href=\"#EXERCICE-9:-display-sum-of-two-Multiply\" data-toc-modified-id=\"EXERCICE-9:-display-sum-of-two-Multiply-2\">EXERCICE 9: display sum of two <code>Multiply</code></a></span></li><li><span><a href=\"#EXERCICE-10:-print-error-in-DisplaySumOfMultiply()\" data-toc-modified-id=\"EXERCICE-10:-print-error-in-DisplaySumOfMultiply()-3\"><strong>EXERCICE 10: print error in <code>DisplaySumOfMultiply()</code></strong></a></span></li><li><span><a href=\"#[optional]-EXERCICE-11:-function-pointers\" data-toc-modified-id=\"[optional]-EXERCICE-11:-function-pointers-4\">[optional] EXERCICE 11: function pointers</a></span></li><li><span><a href=\"#[optional]-EXERCICE-12:-write-in-output-file\" data-toc-modified-id=\"[optional]-EXERCICE-12:-write-in-output-file-5\">[optional] EXERCICE 12: write in output file</a></span></li></ul></div>"
    ]
   },
   {
@@ -100,7 +100,7 @@
    "source": [
     "### EXERCICE 9: display sum of two `Multiply`\n",
     "\n",
-    "Write a `display_sum` function which will write the computation of the sum of two real numbers through their approximation.\n",
+    "Write a `DisplaySumOfMultiply` function which will write the computation of the sum of two real numbers through their approximation.\n",
     "\n",
     "This function will take 5 arguments:\n",
     "\n",
@@ -133,7 +133,7 @@
     "    std::cout << std::endl;\n",
     "    \n",
     "    for (int nbits = 1; nbits <= 8; ++nbits)\n",
-    "        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832\n",
+    "        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832\n",
     "        \n",
     "    return EXIT_SUCCESS;\n",
     "}"
@@ -169,7 +169,7 @@
    "cell_type": "markdown",
    "metadata": {},
    "source": [
-    "### __EXERCICE 10: print error in `display_sum()`__\n",
+    "### __EXERCICE 10: print error in `DisplaySumOfMultiply()`__\n",
     "\n",
     "Modify slightly the function defined above to add display of the error; we will express it over 1000 (see exercice 7 which was roughly the same!)\n",
     "\n",
@@ -231,7 +231,7 @@
     "\n",
     "void Display065_3515_035_4832(int nbits)\n",
     "{ \n",
-    "    display_sum(nbits, 0.65, 3515, 0.35, 4832); \n",
+    "    DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); \n",
     "}\n",
     "\n",
     "int main()\n",
diff --git a/HandsOn/1-ProceduralProgramming/Solution/exercice10.cpp b/HandsOn/1-ProceduralProgramming/Solution/exercice10.cpp
index 108b8e47b065b01d470ada4d0fe418b601a137f5..c5d8e18e1bb48f2bb6b783999ef7506177c583bf 100644
--- a/HandsOn/1-ProceduralProgramming/Solution/exercice10.cpp
+++ b/HandsOn/1-ProceduralProgramming/Solution/exercice10.cpp
@@ -94,7 +94,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -129,7 +129,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/1-ProceduralProgramming/Solution/exercice11.cpp b/HandsOn/1-ProceduralProgramming/Solution/exercice11.cpp
index b82209e707a18b6d8855ce7bcce309e45c57b166..5a38922c4a0ed2d66ced9ee698477303fd96e692 100644
--- a/HandsOn/1-ProceduralProgramming/Solution/exercice11.cpp
+++ b/HandsOn/1-ProceduralProgramming/Solution/exercice11.cpp
@@ -94,7 +94,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -121,7 +121,7 @@ void Display035(int Nbits)
 
 void Display06535150354832(int Nbits)
 { 
-    DisplayMultiply(Nbits, 0.65, 3515, 0.35, 4832); 
+    DisplaySumOfMultiply(Nbits, 0.65, 3515, 0.35, 4832); 
 }
 
 void Loop(int initial, int final, int increment, void(*display_function)(int))
diff --git a/HandsOn/1-ProceduralProgramming/Solution/exercice12.cpp b/HandsOn/1-ProceduralProgramming/Solution/exercice12.cpp
index b80134c2f39ea9d69f78addc8d612a09f3b4759b..ec05e019d5c4d3e97669c45ef6d3ca78b4685857 100644
--- a/HandsOn/1-ProceduralProgramming/Solution/exercice12.cpp
+++ b/HandsOn/1-ProceduralProgramming/Solution/exercice12.cpp
@@ -95,7 +95,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(std::ostream& out, int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(std::ostream& out, int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -122,7 +122,7 @@ void Display035(std::ostream& out, int Nbits)
 
 void Display06535150354832(std::ostream& out, int Nbits)
 { 
-    DisplayMultiply(out, Nbits, 0.65, 3515, 0.35, 4832); 
+    DisplaySumOfMultiply(out, Nbits, 0.65, 3515, 0.35, 4832); 
 }
 
 void Loop(std::ostream& out, int initial, int final, int increment, void(*display_function)(std::ostream&, int))
diff --git a/HandsOn/1-ProceduralProgramming/Solution/exercice9.cpp b/HandsOn/1-ProceduralProgramming/Solution/exercice9.cpp
index 24fa26d00b7230b671480019385037b9bd36c7da..4d52c8094b98076e10e2d049c3c8e688cb91aacd 100644
--- a/HandsOn/1-ProceduralProgramming/Solution/exercice9.cpp
+++ b/HandsOn/1-ProceduralProgramming/Solution/exercice9.cpp
@@ -94,7 +94,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -125,7 +125,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice13.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice13.cpp
index 49ebb2330bfec6b0bb5351241871e2ddd78c0890..6453fd5ba5e7b2c45cd647932889be2993214cd3 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice13.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice13.cpp
@@ -105,7 +105,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -140,7 +140,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice14.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice14.cpp
index b1d75df4d32a9cdf901c9abb7eeaba94564cc7c1..83aa614e03df196d05e996f75b8582e81cb1b522 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice14.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice14.cpp
@@ -110,7 +110,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -145,7 +145,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice15.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice15.cpp
index 7eb0cc234f3ac8592d9ff51be19dd2c8b38f93d0..97149ce77519df4ed6c12bd1ebb5ed01f215ad38 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice15.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice15.cpp
@@ -116,7 +116,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -151,7 +151,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice16.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice16.cpp
index 50db4e06481fea532d1a1389ccdaebb600464988..14adc5edfba5f46fb2b6c8d0bad1b49a0baa053e 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice16.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice16.cpp
@@ -138,7 +138,7 @@ int Multiply(int Nbits, double value, int coefficient)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -173,7 +173,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice17.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice17.cpp
index 33f442aff9e523e57eb35284ca84af8f32cf3589..4abea9bfdf558684cface585c2cabdbfc8433d6e 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice17.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice17.cpp
@@ -142,7 +142,7 @@ void DisplayPowerOf2Approx(int Nbits, double value)
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -181,7 +181,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832); // to compute 0.65 * 3515 + 0.35 * 4832
     
 
     return EXIT_SUCCESS;
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice18.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice18.cpp
index 0f4bf09b7d0857b212b3dbe3afb28857d39fbf31..f526b7b793a309905d8fb0ffd8855e1d224a958c 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice18.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice18.cpp
@@ -163,7 +163,7 @@ void TestDisplayPowerOfTwoApprox::Display(int Nbits, double value) const
 
 
 //! Compute value1 * coefficient1 + value2 * coefficient2 over Nbits bits.
-void DisplayMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
+void DisplaySumOfMultiply(int Nbits, double value1, int coefficient1, double value2, int coefficient2)
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -199,7 +199,7 @@ int main(int argc, char** argv)
     std::cout << std::endl;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
-        DisplayMultiply(nbits, 0.65, 3515, 0.35, 4832);
+        DisplaySumOfMultiply(nbits, 0.65, 3515, 0.35, 4832);
 
     return EXIT_SUCCESS;
 }
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice19.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice19.cpp
index e30bf17e8d2df1242b556cd05d6c0bb6d46ecb25..5245d225e65daf441834294f38cce1be5d19a522 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice19.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice19.cpp
@@ -162,7 +162,7 @@ void TestDisplayPowerOfTwoApprox::Display(int Nbits, double value) const
 }
 
 
-class TestDisplayMultiply
+class TestDisplaySumOfMultiply
 {
 public:
     
@@ -177,13 +177,13 @@ private:
 };
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     int rounded = RoundAsInt(exact);
@@ -218,7 +218,7 @@ int main(int argc, char** argv)
 
     std::cout << std::endl;
 
-    TestDisplayMultiply test_display_multiply;
+    TestDisplaySumOfMultiply test_display_multiply;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
         test_display_multiply.Do(nbits);
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice20.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice20.cpp
index 6bda15baaea5c8658c59c81c3c4bf952b5bf99b1..9cbb0f9742a9614d8aea67d8e4779bd5832d4cda 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice20.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice20.cpp
@@ -187,7 +187,7 @@ void TestDisplayPowerOfTwoApprox::Display(int Nbits, double value) const
 }
 
 
-class TestDisplayMultiply
+class TestDisplaySumOfMultiply
 {
 public:
     
@@ -202,13 +202,13 @@ private:
 };
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -240,7 +240,7 @@ int main(int argc, char** argv)
 
     std::cout << std::endl;
 
-    TestDisplayMultiply test_display_multiply;
+    TestDisplaySumOfMultiply test_display_multiply;
 
     for (int nbits = 1; nbits <= 8; ++nbits)
         test_display_multiply.Do(nbits);
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice21.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice21.cpp
index 4ceb57d4e11542ec90c21d6b590df86203ee8c58..b0eaa89f2f8dbdf32a74f5ba24ede1fc379d3b07 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice21.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice21.cpp
@@ -233,15 +233,15 @@ void TestDisplayPowerOfTwoApprox::Display(int Nbits, double value) const
 }
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -255,20 +255,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -300,7 +300,7 @@ int main(int argc, char** argv)
 
     std::cout << std::endl;
 
-    TestDisplayMultiply test_display_multiply(1000);
+    TestDisplaySumOfMultiply test_display_multiply(1000);
 
     for (int nbits = 1; nbits <= 8; ++nbits)
         test_display_multiply.Do(nbits);
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice22.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice22.cpp
index b065c9d188a863121605ddfb6fd4781a54610166..a4b8031a2b0cc77726e18733286ffb0fc9fe8986 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice22.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice22.cpp
@@ -283,15 +283,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -305,20 +305,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -357,7 +357,7 @@ int main(int argc, char** argv)
     
     std::cout << std::endl;
 
-    TestDisplayMultiply test_display_multiply(1000);
+    TestDisplaySumOfMultiply test_display_multiply(1000);
 
     for (int nbits = 1; nbits <= 8; ++nbits)
         test_display_multiply.Do(nbits);
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice23.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice23.cpp
index 2afa4e44d92ac822bed459ed32dd3f73d8b9a919..ffc13b6e3b066faa3e6fae2791eb1b038ea11b04 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice23.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice23.cpp
@@ -295,15 +295,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -317,20 +317,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -411,7 +411,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     container.Do(4, 16, 4);
     
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice24.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice24.cpp
index 635383240ef2cbd26bbb8fb9b967dd66ea1171c3..ae525dd2e7406f2f7e9abb4451988a7131fcf593 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice24.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice24.cpp
@@ -295,15 +295,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -317,20 +317,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -439,7 +439,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     container.Do(4, 16, 4);
     
diff --git a/HandsOn/2-ObjectProgramming/Solution/exercice25.cpp b/HandsOn/2-ObjectProgramming/Solution/exercice25.cpp
index 6e37babf183b9d758808b529e5aa0f2cc3ba064e..e6a750c928efb61b642e78f6286de3ca3509dc53 100644
--- a/HandsOn/2-ObjectProgramming/Solution/exercice25.cpp
+++ b/HandsOn/2-ObjectProgramming/Solution/exercice25.cpp
@@ -295,15 +295,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -317,20 +317,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -475,7 +475,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/3-Operators/Solution/exercice26.cpp b/HandsOn/3-Operators/Solution/exercice26.cpp
index 59b804f50876d23d59699f80c919937d2be4ebb6..bb36327172545788000bf8aaf6a3818e2d2a5db3 100644
--- a/HandsOn/3-Operators/Solution/exercice26.cpp
+++ b/HandsOn/3-Operators/Solution/exercice26.cpp
@@ -295,15 +295,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -317,20 +317,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -475,7 +475,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/3-Operators/Solution/exercice27.cpp b/HandsOn/3-Operators/Solution/exercice27.cpp
index a6bed9aaa4ac82960bae9e1deb9d15b07535103e..c845e8cd6a32d60280249f8dedebf916e0a87b6d 100644
--- a/HandsOn/3-Operators/Solution/exercice27.cpp
+++ b/HandsOn/3-Operators/Solution/exercice27.cpp
@@ -300,15 +300,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -322,20 +322,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -481,7 +481,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/3-Operators/Solution/exercice28.cpp b/HandsOn/3-Operators/Solution/exercice28.cpp
index 66180944176866c0f8ed9d14e226ce3dbfcad149..204738e088081ef3b8a1c793861858802b62ff56 100644
--- a/HandsOn/3-Operators/Solution/exercice28.cpp
+++ b/HandsOn/3-Operators/Solution/exercice28.cpp
@@ -300,15 +300,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -322,20 +322,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -481,7 +481,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/3-Operators/Solution/exercice29.cpp b/HandsOn/3-Operators/Solution/exercice29.cpp
index 107bf1a96fe1ee1e52beb9b055bca5a22de60ab5..deb443ed8eb8a0ca9ba595e636c813e202c08ee6 100644
--- a/HandsOn/3-Operators/Solution/exercice29.cpp
+++ b/HandsOn/3-Operators/Solution/exercice29.cpp
@@ -307,15 +307,15 @@ void TestDisplayPowerOfTwoApprox035::Do(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -329,20 +329,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::Do(int Nbits) const
+void TestDisplaySumOfMultiply::Do(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -488,7 +488,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/3-Operators/Solution/exercice30.cpp b/HandsOn/3-Operators/Solution/exercice30.cpp
index 8b96d061335861d7e0a8f692f64681b5b0d9719a..9d932a86667f5ac8d5c8176d6da8b49311531c9c 100644
--- a/HandsOn/3-Operators/Solution/exercice30.cpp
+++ b/HandsOn/3-Operators/Solution/exercice30.cpp
@@ -307,15 +307,15 @@ void TestDisplayPowerOfTwoApprox035::operator()(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -329,20 +329,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::operator()(int Nbits) const
+void TestDisplaySumOfMultiply::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -488,7 +488,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/3-Operators/Solution/exercice31.cpp b/HandsOn/3-Operators/Solution/exercice31.cpp
index 8b96d061335861d7e0a8f692f64681b5b0d9719a..9d932a86667f5ac8d5c8176d6da8b49311531c9c 100644
--- a/HandsOn/3-Operators/Solution/exercice31.cpp
+++ b/HandsOn/3-Operators/Solution/exercice31.cpp
@@ -307,15 +307,15 @@ void TestDisplayPowerOfTwoApprox035::operator()(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -329,20 +329,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::operator()(int Nbits) const
+void TestDisplaySumOfMultiply::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -488,7 +488,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 16, 4, container);
     
diff --git a/HandsOn/4-Templates/Solution/exercice31.cpp b/HandsOn/4-Templates/Solution/exercice31.cpp
index 9e72bb9ccde8a2bd18faedfcbbed407efd0b6515..deb5d7fd918e9a1fbf6470574045da4686bbac83 100644
--- a/HandsOn/4-Templates/Solution/exercice31.cpp
+++ b/HandsOn/4-Templates/Solution/exercice31.cpp
@@ -316,15 +316,15 @@ void TestDisplayPowerOfTwoApprox035::operator()(int Nbits) const
 
 
 
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    TestDisplayMultiply(int resolution);
+    TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -338,20 +338,20 @@ private:
 };
 
 
-TestDisplayMultiply::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
-TestDisplayMultiply::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply::~TestDisplaySumOfMultiply() = default;
 
 
-void TestDisplayMultiply::operator()(int Nbits) const
+void TestDisplaySumOfMultiply::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, 3515, 0.35, 4832);
 }
 
 
-void TestDisplayMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
+void TestDisplaySumOfMultiply::Display(int Nbits, double value1, int coefficient1, double value2, int coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -497,7 +497,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply(10000));
+    container.Register(new TestDisplaySumOfMultiply(10000));
     
     Loop(4, 32, 4, container);
     
diff --git a/HandsOn/4-Templates/Solution/exercice32.cpp b/HandsOn/4-Templates/Solution/exercice32.cpp
index 3e369380227023c9033d92b1b20fe6f53b4298b9..8f085f2260a87c7ff6c83f66c3e615214db2e86f 100644
--- a/HandsOn/4-Templates/Solution/exercice32.cpp
+++ b/HandsOn/4-Templates/Solution/exercice32.cpp
@@ -327,15 +327,15 @@ void TestDisplayPowerOfTwoApprox035::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -350,24 +350,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -514,7 +514,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065(1000000));
     container.Register(new TestDisplayPowerOfTwoApprox035(1000000));
-    container.Register(new TestDisplayMultiply<integer_type>(10000));
+    container.Register(new TestDisplaySumOfMultiply<integer_type>(10000));
     
     Loop(4, 32, 4, container);
     
diff --git a/HandsOn/4-Templates/Solution/exercice33.cpp b/HandsOn/4-Templates/Solution/exercice33.cpp
index a38ac9fe7e42ee430780dd0810e5a1bb470a5a32..d6b51822110118822f4497b03ddae1073d945695 100644
--- a/HandsOn/4-Templates/Solution/exercice33.cpp
+++ b/HandsOn/4-Templates/Solution/exercice33.cpp
@@ -340,15 +340,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -363,24 +363,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -527,7 +527,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065<integer_type>(100000000));
     container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-    container.Register(new TestDisplayMultiply<integer_type>(1000000));
+    container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
     Loop(4, 32, 4, container);
     
diff --git a/HandsOn/4-Templates/Solution/exercice34.cpp b/HandsOn/4-Templates/Solution/exercice34.cpp
index 3b53174fde7d3b7f0a46deab77f48b4ba0f0a264..2dfd92aa58e985055c7f254fa3cf714e5c0d3a4d 100644
--- a/HandsOn/4-Templates/Solution/exercice34.cpp
+++ b/HandsOn/4-Templates/Solution/exercice34.cpp
@@ -340,15 +340,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -363,24 +363,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -531,7 +531,7 @@ int main(int argc, char** argv)
     
     container.Register(new TestDisplayPowerOfTwoApprox065<integer_type>(100000000));
     container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-    container.Register(new TestDisplayMultiply<integer_type>(1000000));
+    container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
     Loop(4, 32, 4, container);
     
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice35.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice35.cpp
index 7f2696f253c7405e1d268429b65c7c133fd67dc8..2798a387eeae7e3595f40636bcd3f33354b76b5e 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice35.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice35.cpp
@@ -340,15 +340,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -363,24 +363,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     double exact = value1 * coefficient1 + value2 * coefficient2;
     
@@ -555,7 +555,7 @@ int main(int argc, char** argv)
     
         container.Register(new TestDisplayPowerOfTwoApprox065<integer_type>(100000000));
         container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-        container.Register(new TestDisplayMultiply<integer_type>(1000000));
+        container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice36.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice36.cpp
index 630bd0e515c83989de9366cf6a5a513f1cd2084b..f46e0a43a80cc73f8d296b73c99e70cdb46bba64 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice36.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice36.cpp
@@ -397,15 +397,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -420,24 +420,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -455,7 +455,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -595,7 +595,7 @@ int main(int argc, char** argv)
     
         container.Register(new TestDisplayPowerOfTwoApprox065<integer_type>(100000000));
         container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-        container.Register(new TestDisplayMultiply<integer_type>(1000000));
+        container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_constexpr.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_constexpr.cpp
index c808aec92e994ff6f4dffb0132568488e2fb739f..b96db382e676a706c9ff3acca19e68df17496af1 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_constexpr.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_constexpr.cpp
@@ -409,15 +409,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -432,24 +432,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -467,7 +467,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -607,7 +607,7 @@ int main(int argc, char** argv)
     
         container.Register(new TestDisplayPowerOfTwoApprox065<integer_type>(100000000));
         container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-        container.Register(new TestDisplayMultiply<integer_type>(1000000));
+        container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_struct.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_struct.cpp
index acaa788f71d60914abebd56d1db0841baf8517a3..dc4af43d8df392d0d5ee4775507ddd8871b9bfae 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_struct.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice37_struct.cpp
@@ -432,15 +432,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -455,24 +455,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, 0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -490,7 +490,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -630,7 +630,7 @@ int main(int argc, char** argv)
     
         container.Register(new TestDisplayPowerOfTwoApprox065<integer_type>(100000000));
         container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-        container.Register(new TestDisplayMultiply<integer_type>(1000000));
+        container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice38.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice38.cpp
index 944e26d6fdfe8e8874ae878376618d818fa7cb07..e4678c739eb66a3734abdc0e250fb08d853db41a 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice38.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice38.cpp
@@ -469,15 +469,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -492,24 +492,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, -0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -527,7 +527,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -667,7 +667,7 @@ int main(int argc, char** argv)
     
         container.Register(new TestDisplayPowerOfTwoApproxMinus065<integer_type>(100000000));
         container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-        container.Register(new TestDisplayMultiply<integer_type>(1000000));
+        container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice39.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice39.cpp
index f9e7cd7b5ac691ce279978b9b2e09594f4655057..45381f18b588bba57482b57d06faa76facd62f15 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice39.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice39.cpp
@@ -470,15 +470,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -493,24 +493,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, -0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -528,7 +528,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -637,7 +637,7 @@ int main(int argc, char** argv)
     
         container.Register(new TestDisplayPowerOfTwoApproxMinus065<integer_type>(100000000));
         container.Register(new TestDisplayPowerOfTwoApprox035<integer_type>(100000000));
-        container.Register(new TestDisplayMultiply<integer_type>(1000000));
+        container.Register(new TestDisplaySumOfMultiply<integer_type>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice40.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice40.cpp
index e538579274753569ac7c8b19b81b8a082803d292..d8c57676aeb06f451fc3d1f6a1f7a66d6f022d3a 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice40.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice40.cpp
@@ -471,15 +471,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -494,24 +494,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, -0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -529,7 +529,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -627,7 +627,7 @@ int main(int argc, char** argv)
     
         container.Register(std::make_shared<TestDisplayPowerOfTwoApproxMinus065<integer_type>>(100000000));
         container.Register(std::make_shared<TestDisplayPowerOfTwoApprox035<integer_type>>(100000000));
-        container.Register(std::make_shared<TestDisplayMultiply<integer_type>>(1000000));
+        container.Register(std::make_shared<TestDisplaySumOfMultiply<integer_type>>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice41.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice41.cpp
index 7686d75b7ce3b0a9f8ca66227943176edb083f0e..f121303a9a688f4aee4d3b12d571f458df4df361 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice41.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice41.cpp
@@ -471,15 +471,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -494,24 +494,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, -0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -529,7 +529,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -627,7 +627,7 @@ int main(int argc, char** argv)
     
         container.Register(std::make_unique<TestDisplayPowerOfTwoApproxMinus065<integer_type>>(100000000));
         container.Register(std::make_unique<TestDisplayPowerOfTwoApprox035<integer_type>>(100000000));
-        container.Register(std::make_unique<TestDisplayMultiply<integer_type>>(1000000));
+        container.Register(std::make_unique<TestDisplaySumOfMultiply<integer_type>>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice42.cpp b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice42.cpp
index 759af4a4ac8cf21c78cc2e3d5278e2a1bbc46f86..6e0f79e51a44d6475615099ced7e8aed5e0525ae 100644
--- a/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice42.cpp
+++ b/HandsOn/5-UsefulConceptsAndSTL/Solution/exercice42.cpp
@@ -471,15 +471,15 @@ void TestDisplayPowerOfTwoApprox035<IntT>::operator()(int Nbits) const
 
 
 template<class IntT>
-class TestDisplayMultiply : public TestDisplay
+class TestDisplaySumOfMultiply : public TestDisplay
 {
 public:
     
     //! Constructor.
-    explicit TestDisplayMultiply(int resolution);
+    explicit TestDisplaySumOfMultiply(int resolution);
     
     //! To make the class a concrete one.
-    virtual ~TestDisplayMultiply() override;
+    virtual ~TestDisplaySumOfMultiply() override;
     
     
     //! Display the output for the chosen `Nbits`.
@@ -494,24 +494,24 @@ private:
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::TestDisplayMultiply(int resolution)
+TestDisplaySumOfMultiply<IntT>::TestDisplaySumOfMultiply(int resolution)
 : TestDisplay(resolution)
 { }
 
 
 template<class IntT>
-TestDisplayMultiply<IntT>::~TestDisplayMultiply() = default;
+TestDisplaySumOfMultiply<IntT>::~TestDisplaySumOfMultiply() = default;
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::operator()(int Nbits) const
+void TestDisplaySumOfMultiply<IntT>::operator()(int Nbits) const
 {
     Display(Nbits, -0.65, static_cast<IntT>(3515), 0.35, static_cast<IntT>(4832));
 }
 
 
 template<class IntT>
-void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
+void TestDisplaySumOfMultiply<IntT>::Display(int Nbits, double value1, IntT coefficient1, double value2, IntT coefficient2) const
 {
     try
     {
@@ -529,7 +529,7 @@ void TestDisplayMultiply<IntT>::Display(int Nbits, double value1, IntT coefficie
         IntT approx;
         
         if (__builtin_add_overflow(part1, part2, &approx))
-            throw Error("Overflow (in TestDisplayMultiply<IntT>::Display())!");      
+            throw Error("Overflow (in TestDisplaySumOfMultiply<IntT>::Display())!");      
     
         PrintLine<IntT>(Nbits, exact, static_cast<double>(approx), oconv.str(), "", RoundToInteger::yes);
     }
@@ -574,7 +574,7 @@ int main(int argc, char** argv)
     
         container.emplace_back(std::make_unique<TestDisplayPowerOfTwoApproxMinus065<integer_type>>(100000000));
         container.emplace_back(std::make_unique<TestDisplayPowerOfTwoApprox035<integer_type>>(100000000));
-        container.emplace_back(std::make_unique<TestDisplayMultiply<integer_type>>(1000000));
+        container.emplace_back(std::make_unique<TestDisplaySumOfMultiply<integer_type>>(1000000));
     
         Loop(4, 32, 4, container);
     }
diff --git a/HandsOn/6-InRealEnvironment/Solution/Exercice43/main.cpp b/HandsOn/6-InRealEnvironment/Solution/Exercice43/main.cpp
index abdf6cfe959cc60e676ee9f42b5e46e9490e9e06..ead85e17ccd2c2a8f2bfb847bf8ad3c76fb1f8d8 100644
--- a/HandsOn/6-InRealEnvironment/Solution/Exercice43/main.cpp
+++ b/HandsOn/6-InRealEnvironment/Solution/Exercice43/main.cpp
@@ -41,7 +41,7 @@ int main(int argc, char** argv)
     
         container.emplace_back(std::make_unique<TestDisplayPowerOfTwoApproxMinus065<integer_type>>(100000000));
         container.emplace_back(std::make_unique<TestDisplayPowerOfTwoApprox035<integer_type>>(100000000));
-        container.emplace_back(std::make_unique<TestDisplayMultiply<integer_type>>(1000000));
+        container.emplace_back(std::make_unique<TestDisplaySumOfMultiply<integer_type>>(1000000));
     
         Loop(4, 32, 4, container);
     }