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 fafe16c..229d396 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
@@ -67,7 +67,6 @@
 
     @VisibleForTesting
     public Result execute() {
-        gerritClient.initialize(config, change);
         Integer gptAccountId = gerritClient.getNotNullAccountId(change, config.getGerritUserName());
         ChangeSetData changeSetData = ChangeSetDataHandler.getNewInstance(config, change, gptAccountId);
         GitRepoFilesHandler.createNewInstance(gitRepoFiles);
@@ -131,7 +130,6 @@
 
     private void destroy(GerritChange change) {
         log.info("destroying {}",change);
-        gerritClient.destroy(change);
         ChangeSetDataHandler.removeInstance(change);
     }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java
index 166cca8..dedd320 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClient.java
@@ -1,8 +1,7 @@
 package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit;
 
+import com.google.inject.Inject;
 import com.google.inject.Singleton;
-import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
-import com.googlesource.gerrit.plugins.chatgpt.data.singleton.ChangeSetSingletonManager;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.patch.diff.FileDiffProcessed;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.gerrit.GerritPermittedVotingRange;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.data.GerritClientData;
@@ -13,20 +12,14 @@
 @Slf4j
 @Singleton
 public class GerritClient {
-    private static final String DEFAULT_CHANGE_ID = "DEFAULT_CHANGE_ID";
-    private static GerritClientFacade gerritClientFacade;
+    private final GerritClientFacade gerritClientFacade;
 
-    public void initialize(Configuration config) {
-        initialize(config, new GerritChange(DEFAULT_CHANGE_ID));
-    }
-
-    public void initialize(Configuration config, GerritChange change) {
-        log.debug("Initializing client instances for change: {}", change.getFullChangeId());
-        gerritClientFacade = ChangeSetSingletonManager.getInstance(GerritClientFacade.class, change, config);
+    @Inject
+    public GerritClient(GerritClientFacade gerritClientFacade) {
+        this.gerritClientFacade = gerritClientFacade;
     }
 
     public GerritPermittedVotingRange getPermittedVotingRange(GerritChange change) {
-        updateGerritClientFacade(change);
         return gerritClientFacade.getPermittedVotingRange(change);
     }
 
@@ -35,7 +28,6 @@
     }
 
     public String getPatchSet(GerritChange change) throws Exception {
-        updateGerritClientFacade(change);
         return gerritClientFacade.getPatchSet(change);
     }
 
@@ -48,42 +40,26 @@
     }
 
     public boolean isWorkInProgress(GerritChange change) {
-        updateGerritClientFacade(change);
         return gerritClientFacade.isWorkInProgress(change);
     }
 
     public HashMap<String, FileDiffProcessed> getFileDiffsProcessed(GerritChange change) {
-        updateGerritClientFacade(change);
         return gerritClientFacade.getFileDiffsProcessed();
     }
 
     public Integer getNotNullAccountId(GerritChange change, String authorUsername) {
-        updateGerritClientFacade(change);
         return gerritClientFacade.getNotNullAccountId(authorUsername);
     }
 
     public boolean retrieveLastComments(GerritChange change) {
-        updateGerritClientFacade(change);
         return gerritClientFacade.retrieveLastComments(change);
     }
 
     public void retrievePatchSetInfo(GerritChange change) {
-        updateGerritClientFacade(change);
         gerritClientFacade.retrievePatchSetInfo(change);
     }
 
     public GerritClientData getClientData(GerritChange change) {
-        updateGerritClientFacade(change);
         return gerritClientFacade.getClientData(change);
     }
-
-    public void destroy(GerritChange change) {
-        log.debug("Destroying GerritClientFacade instance for change: {}", change.getFullChangeId());
-        ChangeSetSingletonManager.removeInstance(GerritClientFacade.class, change);
-    }
-
-    private void updateGerritClientFacade(GerritChange change) {
-        gerritClientFacade = ChangeSetSingletonManager.getInstance(GerritClientFacade.class, change);
-    }
-
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java
index 5e872d1..0c253c1 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/api/gerrit/GerritClientFacade.java
@@ -1,5 +1,6 @@
 package com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit;
 
+import com.google.inject.Inject;
 import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
 import com.googlesource.gerrit.plugins.chatgpt.mode.ModeClassLoader;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.patch.diff.FileDiffProcessed;
@@ -20,6 +21,7 @@
     private final IGerritClientPatchSet gerritClientPatchSet;
     private final GerritClientComments gerritClientComments;
 
+    @Inject
     public GerritClientFacade(Configuration config) {
         gerritClientDetail = new GerritClientDetail(config);
         gerritClientPatchSet = (IGerritClientPatchSet) ModeClassLoader.getInstance(
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java
index fa94a95..07880e8 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewStatelessTest.java
@@ -156,8 +156,6 @@
     }
 
     @Test
-    @Ignore("Instance of GerritClient is unregistered from SingletonManager before we can access it in L#172." +
-            "This will be fixed when we migrate to Guice RequestScoped injection.")
     public void gptMentionedInComment() {
         when(config.getGerritUserName()).thenReturn(GERRIT_GPT_USERNAME);
         chatGptPromptStateless.setCommentEvent(true);
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 55140c8..5f73c4d 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/ChatGptReviewTestBase.java
@@ -28,6 +28,7 @@
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.UriResourceLocator;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritClient;
+import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritClientFacade;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
 import lombok.NonNull;
 import org.apache.http.entity.ContentType;
@@ -231,7 +232,7 @@
     }
 
     private void initTest () throws NoSuchProjectException {
-        gerritClient = new GerritClient();
+        gerritClient = new GerritClient(new GerritClientFacade(config));
         patchSetReviewer = new PatchSetReviewer(gerritClient, config);
         mockConfigCreator = mock(ConfigCreator.class);
     }
diff --git a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java
index 1268f6b..77baa74 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/chatgpt/integration/CodeReviewPluginIT.java
@@ -53,7 +53,6 @@
         when(config.getGerritUserName()).thenReturn("Your Gerrit username");
         when(config.getGerritPassword()).thenReturn("Your Gerrit password");
 
-        gerritClient.initialize(config);
         String patchSet = gerritClient.getPatchSet("${changeId}");
         log.info("patchSet: {}", patchSet);
         assertNotNull(patchSet);
@@ -69,8 +68,6 @@
         reviewBatches.add(new ReviewBatch());
         reviewBatches.get(0).setContent("message");
 
-        gerritClient.initialize(config);
-
         GerritClientReview gerritClientReview = new GerritClientReview(config);
         gerritClientReview.setReview("Your changeId", reviewBatches);
     }
