diff --git a/symmetric_polynomials.py b/symmetric_polynomials.py
index 6a4ff7f..8e48a97 100644
--- a/symmetric_polynomials.py
+++ b/symmetric_polynomials.py
@@ -32,16 +32,16 @@
         pol2 = TexMobject("\\prod_{i = 1}^n (x - ", "\\alpha_i", ")")
         pol2_1, alpha_pol, pol2_3 = pol2.split()
 
-        vieta1 = TexMobject("a_{n-1} = ", "\\alpha_1", " + \ldots + ", "\\alpha_n")
-        vieta1_i, vieta1_alpha1, vieta1_plus, vieta1_alphan = vieta1.split()
+        vieta1 = TexMobject("a_{n-1} = - (", "\\alpha_1", " + \ldots + ", "\\alpha_n", ")")
+        vieta1_i, vieta1_alpha1, vieta1_plus, vieta1_alphan, vieta1_post = vieta1.split()
 
         vietamore = TexMobject("\\vdots")
 
-        vieta2 = TexMobject("a_0 = ", "\\alpha_1", " \cdot \ldots \cdot ", "\\alpha_n")
-        vieta2_i, vieta2_alpha1, vieta2_prod, vieta2_alphan = vieta2.split()
+        vieta2 = TexMobject("a_0 = (-1)^n \\cdot (", "\\alpha_1", " \cdot \ldots \cdot ", "\\alpha_n", ")")
+        vieta2_i, vieta2_alpha1, vieta2_prod, vieta2_alphan, vieta2_post = vieta2.split()
 
         general_vieta = TexMobject("(-1)^k a_{n-k} = \\sum_{1 \\le i_1 < i_2 < \\cdots < i_k \\le n} \\left( \\prod_{j=1}^k \\alpha_{i_j} \\right)")
-        general_vieta_desc = TextMobject("Fòrmules de Viète")
+        general_vieta_desc = TextMobject("Fórmules de Viète")
 
         vietas = VGroup(vieta1, vietamore, vieta2)
         vietamore.next_to(vieta1, DOWN, buff = 0.4)
@@ -77,7 +77,8 @@
         self.wait(1.5)
 
         self.play(
-            Write(vieta1),
+            Write(vieta1,
+                run_time=1),
             Transform(alpha_pol, vieta1_alpha1),
             Transform(alpha_pol2, vieta1_alphan)
         )
@@ -85,7 +86,8 @@
 
         self.play(FadeIn(vietamore))
         self.play(
-            Write(vieta2),
+            Write(vieta2,
+                run_time=1),
             Transform(alpha_pol3, vieta2_alpha1),
             Transform(alpha_pol4, vieta2_alphan)
         )
@@ -93,7 +95,7 @@
 
         self.play(Transform(vietas, general_vieta))
         self.wait(1.5)
-        
+
         self.play(
             FadeIn(framebox),
             FadeInFrom(general_vieta_desc, UP)
@@ -134,7 +136,8 @@
         arsmagna.to_edge(RIGHT, buff=1)
         arsmagna_desc = create_label(arsmagna, "\\textit{Ars Magna} (1545)")
 
-        cardano_cita = TextMobject("``Differentia aequationum verarum et fictarui \\\\ semper est numerus quadrato''")
+        cardano_cita = TextMobject("``Differentia aequationum ", "verarum", " et ", "fictarui", " \\\\ semper est numerus quadrato''")
+        cardano_pre, cardano_v, cardano_et, cardano_f, cardano_post = cardano_cita.split()
         cardano_cita.scale(0.825)
         cardano_cita.next_to(cardano, RIGHT)
 
@@ -162,6 +165,18 @@
         )
         self.wait(1.5)
 
+        self.play(ApplyMethod(
+            cardano_v.set_color, RED,
+            rate_func = there_and_back,
+            run_time = 1
+        ))
+        self.play(ApplyMethod(
+            cardano_f.set_color, RED,
+            rate_func = there_and_back,
+            run_time = 1
+        ))
+        self.wait(1.5)
+
         viete = create_image("img/viete.jpeg")
         viete.to_edge(LEFT, buff=1)
         viete_desc = create_label(viete, "François Viète (1540-1603)")
@@ -192,7 +207,7 @@
         primer = TextMobject("Primer teorema de polinomis simètrics, \\\\ sense saber-ho")
         primer.scale(0.825)
         primer.next_to(girard, RIGHT)
-        
+
         self.play(Write(primer))
         self.wait(1.5)
 
@@ -217,11 +232,37 @@
         )
         self.wait(1.5)
 
+        factions_tex = TexMobject("\\text{Faction } k = \\sum_{\\{ i_1, \ldots, i_k \\} \\in \\{ 1, 2, \ldots, n \\}} \\alpha_{i_1} \\cdot \\cdots \\cdot \\alpha_{i_k}")
+        factions_tex.scale(0.95)
+        factions_tex.next_to(girard, RIGHT)
+
+        self.play(
+            FadeOut(factions),
+            Write(factions_tex)
+        )
+        self.wait(1.5)
+
+        notthesame = TexMobject("\\sum_{i < j} \\alpha_i \\alpha_j ", "\\neq", " \\sum_{i} \\alpha_i^2")
+        notthesame.next_to(girard, RIGHT).shift(1*RIGHT)
+
+        notthesame2 = TexMobject("\\sum_{i < j < k} \\alpha_i \\alpha_j \\alpha_k ", "\\neq", " \\sum_{i} \\alpha_i^3")
+        notthesame2.next_to(girard, RIGHT).shift(1*RIGHT)
+
+        self.play(Transform(factions_tex, notthesame))
+        self.remove(factions_tex)
+        self.add(notthesame)
+        self.wait(1.5)
+
+        self.play(Transform(notthesame, notthesame2))
+        self.remove(notthesame)
+        self.add(notthesame2)
+        self.wait(1.5)
+
         sommes = create_image("img/sommepuissances.png")
         sommes.to_edge(RIGHT, buff=1)
 
         self.play(
-            FadeOut(factions),
+            FadeOut(notthesame2),
             FadeIn(sommes),
             ApplyMethod(invention_desc.next_to, sommes, DOWN)
         )
@@ -240,22 +281,13 @@
         self.add(sommes2_desc)
         self.wait(1.5)
 
-        notthesame = TexMobject("\\sum_{i < j} \\alpha_i \\alpha_j \\neq \\sum_{i} \\alpha_i^2")
-        notthesame.next_to(girard, RIGHT).shift(1*RIGHT)
-
-        self.play(
-            FadeOut(sommes2),
-            FadeOut(sommes2_desc),
-            Write(notthesame)
-        )
-        self.wait(1.5)
-
         waring = create_image("img/waring.jpg")
         waring.to_edge(LEFT, buff=1)
         waring_desc = create_label(waring, "Edward Waring (1736-1798)")
 
         self.play(
-            FadeOut(notthesame),
+            FadeOut(sommes2),
+            FadeOut(sommes2_desc),
             FadeOut(girard),
             FadeIn(waring),
             Transform(girard_desc, waring_desc)
@@ -285,7 +317,7 @@
 
         teoremes = VGroup(th1, th2, th3)
         teoremes.next_to(waring, RIGHT).shift(1*RIGHT)
-        
+
         self.play(
             FadeInFrom(th1, UP),
             FadeIn(th2),
