diff --git a/hyfetch/pride_month.py b/hyfetch/pride_month.py
index b0bc5af2..c45a45bf 100644
--- a/hyfetch/pride_month.py
+++ b/hyfetch/pride_month.py
@@ -1,4 +1,5 @@
 import math
+import random
 from time import sleep
 
 from hyfetch import presets
@@ -34,14 +35,19 @@ def start_animation():
     text_start_x = w // 2 - text_width // 2
     text_end_x = text_start_x + text_width
 
-    for i in range(blocks):
-        colors += PRESETS['rainbow'].colors
-        colors += PRESETS['transgender'].colors
+    colors += PRESETS['rainbow'].colors
+    colors += PRESETS['transgender'].colors
+    colors += PRESETS['nonbinary'].colors
+    colors += PRESETS['agender'].colors
+    last_idx = len(colors) - 1
+
+    preset_items = set(PRESETS.items())
 
     black = RGB(0, 0, 0)
     white = RGB(255, 255, 255)
 
     def draw_frame():
+        nonlocal colors, last_idx
         buf = ""
 
         # Loop over the height
@@ -60,14 +66,28 @@ def start_animation():
 
                 # If it's a switching point
                 if idx % block_width == 0 or x == text_start_x - border or x == text_end_x + border:
+                    cidx = (idx // block_width) % len(colors)
+
                     # Print the color at the current frame
-                    c = colors[(idx // block_width) % len(colors)]
+                    c = colors[cidx]
                     if y_text and text_start_x - border <= x < text_end_x + border:
                         # buf += c.set_light(0.3).to_ansi_rgb(foreground=False)
                         buf += c.overlay(black, 0.5).to_ansi_rgb(foreground=False)
                     else:
                         buf += c.to_ansi_rgb(foreground=False)
 
+                    # If it's the last color of the last line, check if it's time to randomize new colors
+                    if y == h - 1 and x > w - speed - 1:
+                        # If idx = last_idx, it's time to randomize
+                        if cidx == last_idx:
+                            print("Hit")
+                            input()
+                            # Randomize colors
+                            new = random.choice(list(preset_items))[1].colors
+                            for c in new:
+                                colors[last_idx] = c
+                                last_idx = (last_idx + 1) % len(colors)
+
                 # If text should be printed, print text
                 if y_text and text_start_x <= x < text_end_x:
                     # Add white background
@@ -85,7 +105,7 @@ def start_animation():
 
     while 1:
         # Clear the screen
-        print("\033[2J\033[H", end="")
+        # print("\033[2J\033[H", end="")
         draw_frame()
         frame += speed
         sleep(frame_delay)