diff --git a/Interviews/Interviewer.cs b/Interviews/Interviewer.cs
index 4c25e58..d50a20a 100644
--- a/Interviews/Interviewer.cs
+++ b/Interviews/Interviewer.cs
@@ -19,23 +19,28 @@ public static class Interviewer
             return false;
         }
 
+        if (!ConvertReferences(interview, interview.interviewRoot, out string errID))
+        {
+            DiscordMessage errorMessage = await channel.SendMessageAsync(new DiscordEmbedBuilder
+            {
+                Description = "Error: Could not start interview, the referenced step id '" + errID + "' does not exist in the interview template step definitions.",
+                Color = DiscordColor.Red
+            });
+            interview.interviewRoot.AddRelatedMessageIDs(errorMessage.Id);
+            Database.SaveInterview(interview);
+            return false;
+        }
+
         await SendNextMessage(interview, channel, interview.interviewRoot);
         return Database.SaveInterview(interview);
     }
 
     public static async Task<bool> RestartInterview(DiscordChannel channel)
     {
-        if (Database.TryGetInterview(channel.Id, out Interview interview))
+        if (!await StopInterview(channel))
         {
-            if (Config.deleteMessagesAfterInterviewEnd)
-            {
-                await DeletePreviousMessages(interview, channel);
-            }
-
-            if (!Database.TryDeleteInterview(channel.Id))
-            {
-                Logger.Warn("Could not delete interview from database. Channel ID: " + channel.Id);
-            }
+            Logger.Error("Failed to stop interview in channel '" + channel.Id + "'.");
+            return false;
         }
 
         return await StartInterview(channel);
@@ -211,7 +216,7 @@ public static class Interviewer
         }
     }
 
-    public static bool TryGetStepFromReference(Interview interview, ReferencedInterviewStep reference, out InterviewStep step)
+    private static bool TryGetStepFromReference(Interview interview, ReferencedInterviewStep reference, out InterviewStep step)
     {
         foreach (KeyValuePair<string, InterviewStep> definition in interview.definitions)
         {
@@ -339,28 +344,22 @@ public static class Interviewer
             case MessageType.USER_SELECTOR:
             case MessageType.CHANNEL_SELECTOR:
             case MessageType.MENTIONABLE_SELECTOR:
-                foreach ((string stepPattern, ReferencedInterviewStep reference) in nextStep.references)
+                if (!ConvertReferences(interview, nextStep, out string errID))
                 {
-                    if (!reference.TryGetReferencedStep(interview.definitions, out InterviewStep step))
+                    if (answerMessage != null)
                     {
-                        if (answerMessage != null)
+                        DiscordMessage errorMessage = await answerMessage.RespondAsync(new DiscordEmbedBuilder
                         {
-                            DiscordMessage lengthMessage = await answerMessage.RespondAsync(new DiscordEmbedBuilder
-                            {
-                                Description = "Error: The referenced step id '" + reference.id + "' does not exist in the step definitions.",
-                                Color = DiscordColor.Red
-                            });
-                            nextStep.AddRelatedMessageIDs(answerMessage.Id, lengthMessage.Id);
-                            previousStep.answer = null;
-                            previousStep.answerID = 0;
-                            Database.SaveInterview(interview);
-                        }
-                        return;
+                            Description = "Error: The referenced step id '" + errID + "' does not exist in the step definitions.",
+                            Color = DiscordColor.Red
+                        });
+                        nextStep.AddRelatedMessageIDs(answerMessage.Id, errorMessage.Id);
+                        previousStep.answer = null;
+                        previousStep.answerID = 0;
+                        Database.SaveInterview(interview);
                     }
-
-                    nextStep.steps.Add(stepPattern, step);
+                    return;
                 }
-                nextStep.references.Clear();
 
                 await SendNextMessage(interview, channel, nextStep);
                 Database.SaveInterview(interview);
@@ -477,6 +476,23 @@ public static class Interviewer
         }
     }
 
+    private static bool ConvertReferences(Interview interview, InterviewStep step, out string errorID)
+    {
+        foreach ((string stepPattern, ReferencedInterviewStep reference) in step.references)
+        {
+            if (!reference.TryGetReferencedStep(interview.definitions, out InterviewStep referencedStep))
+            {
+                errorID = reference.id;
+                return false;
+            }
+
+            step.steps.Add(stepPattern, referencedStep);
+        }
+        step.references.Clear();
+        errorID = "";
+        return true;
+    }
+
     private static async Task DeletePreviousMessages(Interview interview, DiscordChannel channel)
     {
         List<ulong> previousMessages = [];