diff --git a/Boyfriend.cs b/Boyfriend.cs
index 1b1577b..e32a155 100644
--- a/Boyfriend.cs
+++ b/Boyfriend.cs
@@ -30,9 +30,10 @@ public static class Boyfriend {
             new Game("Masayoshi Minoshima (ft. nomico) - Bad Apple!!", ActivityType.Listening),
             new TimeSpan(0, 3, 40)),
         Tuple.Create(new Game("Xi - Blue Zenith", ActivityType.Listening), new TimeSpan(0, 4, 16)),
-        Tuple.Create(new Game("Kurokotei - Scattered Faith", ActivityType.Listening), new TimeSpan(0, 8, 21)),
+        Tuple.Create(
+            new Game("UNDEAD CORPORATION - Everything will freeze", ActivityType.Listening), new TimeSpan(0, 3, 18)),
         Tuple.Create(new Game("Splatoon 3 - Candy-Coated Rocks", ActivityType.Listening), new TimeSpan(0, 2, 39)),
-        Tuple.Create(new Game("RetroSpecter - Genocide", ActivityType.Listening), new TimeSpan(0, 5, 52)),
+        Tuple.Create(new Game("RetroSpecter - Overtime", ActivityType.Listening), new TimeSpan(0, 4, 33)),
         Tuple.Create(new Game("beatMARIO - Night of Knights", ActivityType.Listening), new TimeSpan(0, 4, 10))
     };
 
@@ -61,20 +62,22 @@ public static class Boyfriend {
         if (ActivityList.Length is 0) timer.Dispose(); // CodeQL moment
         timer.Start();
 
-        while (ActivityList.Length > 0)
-            if (DateTimeOffset.Now >= _nextSongAt) {
-                var nextSong = ActivityList[_nextSongIndex];
-                await Client.SetActivityAsync(nextSong.Item1);
-                _nextSongAt = DateTimeOffset.Now.Add(nextSong.Item2);
-                _nextSongIndex++;
-                if (_nextSongIndex >= ActivityList.Length) _nextSongIndex = 0;
-            }
+        await Task.Delay(-1);
     }
 
     private static async void TickAllGuildsAsync(object? sender, ElapsedEventArgs e) {
         if (GuildTickTasks.Count is not 0) return;
 
-        foreach (var guild in Client.Guilds) GuildTickTasks.Add(TickGuildAsync(guild));
+        var now = DateTimeOffset.Now;
+        foreach (var guild in Client.Guilds) GuildTickTasks.Add(TickGuildAsync(guild, now));
+
+        if (now >= _nextSongAt) {
+            var nextSong = ActivityList[_nextSongIndex];
+            await Client.SetActivityAsync(nextSong.Item1);
+            _nextSongAt = now.Add(nextSong.Item2);
+            _nextSongIndex++;
+            if (_nextSongIndex >= ActivityList.Length) _nextSongIndex = 0;
+        }
 
         try { Task.WaitAll(GuildTickTasks.ToArray()); } catch (AggregateException ex) {
             foreach (var exc in ex.InnerExceptions)
@@ -114,7 +117,7 @@ public static class Boyfriend {
         return Task.CompletedTask;
     }
 
-    private static async Task TickGuildAsync(SocketGuild guild) {
+    private static async Task TickGuildAsync(SocketGuild guild, DateTimeOffset now) {
         var data = GuildData.Get(guild);
         var config = data.Preferences;
         var saveData = false;
@@ -126,7 +129,7 @@ public static class Boyfriend {
                     .Now
                 >= schEvent.StartTime) await schEvent.StartAsync();
             else if (!data.EarlyNotifications.Contains(schEvent.Id)
-                     && DateTimeOffset.Now >= schEvent.StartTime.Subtract(new TimeSpan(0, offset, 0))) {
+                     && now >= schEvent.StartTime.Subtract(new TimeSpan(0, offset, 0))) {
                 data.EarlyNotifications.Add(schEvent.Id);
                 var receivers = config["EventStartedReceivers"];
                 var role = guild.GetRole(ulong.Parse(config["EventNotificationRole"]));
@@ -150,11 +153,11 @@ public static class Boyfriend {
         _ = ulong.TryParse(config["StarterRole"], out var starterRoleId);
         foreach (var mData in data.MemberData.Values) {
             var user = guild.GetUser(mData.Id);
-            if (DateTimeOffset.Now >= mData.BannedUntil) _ = guild.RemoveBanAsync(mData.Id);
+            if (now >= mData.BannedUntil) _ = guild.RemoveBanAsync(mData.Id);
             if (!mData.IsInGuild) continue;
             if (!mData.Roles.Contains(starterRoleId) && mData.MutedUntil is null) _ = user.AddRoleAsync(starterRoleId);
 
-            if (DateTimeOffset.Now >= mData.MutedUntil) {
+            if (now >= mData.MutedUntil) {
                 await Utils.UnmuteMemberAsync(
                     data, Client.CurrentUser.ToString(), user,
                     Messages.PunishmentExpired);
@@ -163,7 +166,7 @@ public static class Boyfriend {
 
             for (var i = mData.Reminders.Count - 1; i >= 0; i--) {
                 var reminder = mData.Reminders[i];
-                if (DateTimeOffset.Now < reminder.RemindAt) continue;
+                if (now < reminder.RemindAt) continue;
 
                 var channel = guild.GetTextChannel(reminder.ReminderChannel);
                 if (channel is not null)