diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java
index 885736f..ea6b1fe 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/listener/EventHandlerTask.java
@@ -14,7 +14,6 @@
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritClient;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.data.ChangeSetData;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
-import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFilesHandler;
 import lombok.extern.slf4j.Slf4j;
 
 import java.util.List;
@@ -37,7 +36,6 @@
 
     private final Configuration config;
     private final GerritClient gerritClient;
-    private final GitRepoFiles gitRepoFiles;
     private final ChangeSetData changeSetData;
     private final GerritChange change;
     private final PatchSetReviewer reviewer;
@@ -50,7 +48,6 @@
             GerritChange change,
             PatchSetReviewer reviewer,
             GerritClient gerritClient,
-            GitRepoFiles gitRepoFiles,
             PluginDataHandler pluginDataHandler
     ) {
         this.changeSetData = changeSetData;
@@ -58,7 +55,6 @@
         this.reviewer = reviewer;
         this.gerritClient = gerritClient;
         this.config = config;
-        this.gitRepoFiles = gitRepoFiles;
         this.pluginDataHandler = pluginDataHandler;
     }
 
@@ -69,7 +65,6 @@
 
     @VisibleForTesting
     public Result execute() {
-        GitRepoFilesHandler.createNewInstance(gitRepoFiles);
         ProjectDataHandler.createNewInstance(pluginDataHandler);
 
         if (!preProcessEvent(change, changeSetData)) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
index d8cc4de..4b4a86d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
@@ -8,7 +8,7 @@
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.http.HttpClient;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.chatgpt.ChatGptTool;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.UriResourceLocatorStateful;
-import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFilesHandler;
+import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.prompt.ChatGptPromptStateful;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.model.api.chatgpt.ChatGptCreateAssistantResponse;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.model.api.chatgpt.ChatGptFilesResponse;
@@ -32,10 +32,12 @@
 
     private final HttpClient httpClient = new HttpClient();
     private final GerritChange change;
+    private final GitRepoFiles gitRepoFiles;
 
-    public ChatGptAssistant(Configuration config, GerritChange change) {
+    public ChatGptAssistant(Configuration config, GerritChange change, GitRepoFiles gitRepoFiles) {
         super(config);
         this.change = change;
+        this.gitRepoFiles = gitRepoFiles;
     }
 
     public void setupAssistant() {
@@ -53,7 +55,7 @@
     }
 
     private String uploadRepoFiles() {
-        String repoFiles = GitRepoFilesHandler.getInstance().getGitRepoFiles(change);
+        String repoFiles = gitRepoFiles.getGitRepoFiles(change);
         Path repoPath = createTempFileWithContent(change.getProjectName(), ".json", repoFiles);
         ChatGptFiles chatGptFiles = new ChatGptFiles(config);
         ChatGptFilesResponse chatGptFilesResponse = chatGptFiles.uploadFiles(repoPath);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java
index 0b62eb0..22107e1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/gerrit/GerritClientPatchSetStateful.java
@@ -7,18 +7,21 @@
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritClientPatchSet;
 import com.googlesource.gerrit.plugins.chatgpt.mode.interfaces.client.api.gerrit.IGerritClientPatchSet;
+import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
 public class GerritClientPatchSetStateful extends GerritClientPatchSet implements IGerritClientPatchSet {
+    private final GitRepoFiles gitRepoFiles;
 
     @Inject
-    public GerritClientPatchSetStateful(Configuration config) {
+    public GerritClientPatchSetStateful(Configuration config, GitRepoFiles gitRepoFiles) {
         super(config);
+        this.gitRepoFiles = gitRepoFiles;
     }
 
     public String getPatchSet(ChangeSetData changeSetData, GerritChange change) {
-        ChatGptAssistant chatGptAssistant = new ChatGptAssistant(config, change);
+        ChatGptAssistant chatGptAssistant = new ChatGptAssistant(config, change, gitRepoFiles);
         chatGptAssistant.setupAssistant();
 
         return "";
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/git/GitRepoFilesHandler.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/git/GitRepoFilesHandler.java
deleted file mode 100644
index 7e734ff..0000000
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/git/GitRepoFilesHandler.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git;
-
-public class GitRepoFilesHandler {
-    private static GitRepoFiles gitRepoFiles;
-
-    public static synchronized GitRepoFiles getInstance() {
-        return gitRepoFiles;
-    }
-
-    public static synchronized void createNewInstance(GitRepoFiles gitRepoFiles) {
-        GitRepoFilesHandler.gitRepoFiles = gitRepoFiles;
-    }
-
-}
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
index 4966a2a..305ff60 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
@@ -315,7 +315,7 @@
 
     private IGerritClientPatchSet getGerritClientPatchSet() {
         return switch (config.getGptMode()) {
-            case stateful -> new GerritClientPatchSetStateful(config);
+            case stateful -> new GerritClientPatchSetStateful(config, gitRepoFiles);
             case stateless -> new GerritClientPatchSetStateless(config);
         };
     }
