-using Dalamud.Game.Text;
+using System.Collections.Generic;
+using Dalamud.Game.Text;
 using Dalamud.Game.Text.SeStringHandling;
 using Dalamud.Plugin.Services;
+using Questionable.Data;
 using Questionable.External;
+using Questionable.Model;
 using Questionable.Model.Questing;
 
 namespace Questionable.Controller.Steps.Common;
 
 internal static class SendNotification
 {
+    internal sealed class Factory(
+        Configuration configuration,
+        TerritoryData territoryData) : SimpleTaskFactory
+    {
+        public override ITask? CreateTask(Quest quest, QuestSequence sequence, QuestStep step)
+        {
+            return step.InteractionType switch
+            {
+                EInteractionType.Snipe when !configuration.General.AutomaticallyCompleteSnipeTasks =>
+                    new Task(step.InteractionType, step.Comment),
+                EInteractionType.Duty =>
+                    new Task(step.InteractionType, step.ContentFinderConditionId.HasValue
+                        ? territoryData.GetContentFinderConditionName(step.ContentFinderConditionId.Value)
+                        : step.Comment),
+                EInteractionType.SinglePlayerDuty => new Task(step.InteractionType, quest.Info.Name),
+                _ => null,
+            };
+        }
+    }
+
     internal sealed record Task(EInteractionType InteractionType, string? Comment) : ITask
     {
         public override string ToString() => "SendNotification";
 
 using Dalamud.Game.ClientState.Conditions;
 using Dalamud.Plugin.Services;
 using Questionable.Controller.Steps.Common;
-using Questionable.Controller.Steps.Interactions;
 using Questionable.Controller.Utils;
 using Questionable.Data;
 using Questionable.Functions;
     internal sealed class Factory(
         IClientState clientState,
         ICondition condition,
-        TerritoryData territoryData,
-        Configuration configuration)
+        TerritoryData territoryData)
         : ITaskFactory
     {
         public IEnumerable<ITask> CreateAllTasks(Quest quest, QuestSequence sequence, QuestStep step)
 
                 case EInteractionType.WaitForManualProgress:
                 case EInteractionType.Instruction:
-                    return [new WaitNextStepOrSequence()];
-
                 case EInteractionType.Snipe:
-                    if (configuration.General.AutomaticallyCompleteSnipeTasks)
-                        return [new WaitNextStepOrSequence()];
-                    else
-                        return [
-                            new SendNotification.Task(step.InteractionType, step.Comment),
-                            new WaitNextStepOrSequence()
-                        ];
+                    return [new WaitNextStepOrSequence()];
 
                 case EInteractionType.Duty:
-                    return [
-                        new SendNotification.Task(step.InteractionType, step.ContentFinderConditionId.HasValue ? territoryData.GetContentFinderConditionName(step.ContentFinderConditionId.Value) : step.Comment),
-                        new EndAutomation(),
-                    ];
-
                 case EInteractionType.SinglePlayerDuty:
-                    return [
-                        new SendNotification.Task(step.InteractionType, quest.Info.Name),
-                        new EndAutomation()
-                    ];
+                    return [new EndAutomation()];
 
                 case EInteractionType.WalkTo:
                 case EInteractionType.Jump:
 
         serviceCollection.AddTaskFactoryAndExecutor<MoveTo.MoveTask, MoveTo.Factory, MoveTo.MoveExecutor>();
         serviceCollection.AddTaskExecutor<MoveTo.WaitForNearDataId, MoveTo.WaitForNearDataIdExecutor>();
         serviceCollection.AddTaskExecutor<MoveTo.LandTask, MoveTo.LandExecutor>();
+        serviceCollection
+            .AddTaskFactoryAndExecutor<SendNotification.Task, SendNotification.Factory, SendNotification.Executor>();
 
         serviceCollection
             .AddTaskFactoryAndExecutor<NextQuest.SetQuestTask, NextQuest.Factory, NextQuest.NextQuestExecutor>();
         serviceCollection.AddTaskExecutor<InitiateLeve.Initiate, InitiateLeve.InitiateExecutor>();
         serviceCollection.AddTaskExecutor<InitiateLeve.SelectDifficulty, InitiateLeve.SelectDifficultyExecutor>();
 
-        serviceCollection.AddTaskExecutor<SendNotification.Task, SendNotification.Executor>();
         serviceCollection.AddTaskExecutor<WaitCondition.Task, WaitCondition.WaitConditionExecutor>();
         serviceCollection.AddTaskFactory<WaitAtEnd.Factory>();
         serviceCollection.AddTaskExecutor<WaitAtEnd.WaitDelay, WaitAtEnd.WaitDelayExecutor>();