diff --git a/BUILD b/BUILD
index f8f49ad..16585b2 100644
--- a/BUILD
+++ b/BUILD
@@ -9,27 +9,27 @@
 )
 
 gerrit_plugin(
-    name = "gerrit-cached-refdb",
+    name = "cached-refdb",
     srcs = glob(["src/main/java/**/*.java"]),
     manifest_entries = [
-        "Gerrit-PluginName: gerrit-cached-refdb",
-        "Implementation-Title: gerrit-cached-refdb plugin",
-        "Implementation-URL: TODO",
+        "Gerrit-PluginName: cached-refdb",
+        "Implementation-Title: cached-refdb plugin",
+        "Implementation-URL: https://gerrit-review.googlesource.com/admin/repos/modules/cached-refdb",
     ],
     resources = glob(["src/main/resources/**/*"]),
     deps = [],
 )
 
 junit_tests(
-    name = "gerrit-cached-refdb_tests",
+    name = "cached-refdb_tests",
     srcs = glob(["src/test/java/**/*Test.java"]),
     resources = glob(["src/test/resources/**/*"]),
     tags = [
         "local",
-        "gerrit-cached-refdb",
+        "cached-refdb",
     ],
     deps = PLUGIN_DEPS + PLUGIN_TEST_DEPS + [
-        ":gerrit-cached-refdb__plugin",
+        ":cached-refdb__plugin",
     ],
 )
 
@@ -39,6 +39,6 @@
     labels = ["server"],
     vm_args = ["-Xmx2G"],
     deps = [
-        ":gerrit-cached-refdb__plugin",
+        ":cached-refdb__plugin",
     ],
-)
\ No newline at end of file
+)
diff --git a/README.md b/README.md
index c539da7..52ea745 100644
--- a/README.md
+++ b/README.md
@@ -53,27 +53,27 @@
 ```
 git clone --recursive https://gerrit.googlesource.com/gerrit
 cd plugins
-git clone "https://review.gerrithub.io/geminicaprograms/gerrit-cached-refdb"
-cd .. && bazel build plugins/gerrit-cached-refdb
+git clone "https://gerrit.googlesource.com/modules/cached-refdb"
+cd .. && bazel build plugins/cached-refdb
 ```
 
 The output plugin jar is created in:
 
 ```
-bazel-bin/plugins/gerrit-cached-refdb/gerrit-cached-refdb.jar
+bazel-bin/plugins/cached-refdb/cached-refdb.jar
 ```
 
 ## How to install
 
-Copy the gerrit-cached-refdb.jar into the `${GERRIT_SITE}/lib/` so that it is
+Copy the cached-refdb.jar into the `${GERRIT_SITE}/lib/` so that it is
 being loaded when the Gerrit instance is started. Note that the following
 configuration options need to be added
 
 ```
 git config --file ${GERRIT_SITE}/etc/gerrit.config gerrit.installDbModule\
-  com.googlesource.gerrit.plugins.gerritcachedrefdb.LibDbModule
+  com.googlesource.gerrit.plugins.cachedrefdb.LibDbModule
 git config --file ${GERRIT_SITE}/etc/gerrit.config gerrit.installModule\
-  com.googlesource.gerrit.plugins.gerritcachedrefdb.LibSysModule
+  com.googlesource.gerrit.plugins.cachedrefdb.LibSysModule
 ```
 
 By default cache can hold up to `1024` refs which will not be sufficient for
@@ -84,5 +84,5 @@
 git config --file ${GERRIT_SITE}/etc/gerrit.config cache.ref_by_name.memoryLimit 10240
 ```
 
-Note that libraty module requires the Gerrit instance restart in order to pick
+Note that library module requires the Gerrit instance restart in order to pick
 up the configuration changes.
\ No newline at end of file
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/BatchRefUpdateWithCacheUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/BatchRefUpdateWithCacheUpdate.java
similarity index 98%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/BatchRefUpdateWithCacheUpdate.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/BatchRefUpdateWithCacheUpdate.java
index a3ebb47..c3b8537 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/BatchRefUpdateWithCacheUpdate.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/BatchRefUpdateWithCacheUpdate.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/GerritCachedGitRepositoryManager.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedGitRepositoryManager.java
similarity index 91%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/GerritCachedGitRepositoryManager.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedGitRepositoryManager.java
index 5a222c3..99b92a3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/GerritCachedGitRepositoryManager.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedGitRepositoryManager.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gerrit.entities.Project;
@@ -25,12 +25,12 @@
 import org.eclipse.jgit.lib.Repository;
 
 @Singleton
-class GerritCachedGitRepositoryManager implements GitRepositoryManager {
+class CachedGitRepositoryManager implements GitRepositoryManager {
   private final LocalDiskRepositoryManager repoManager;
   private final CachedRefRepository.Factory repoWrapperFactory;
 
   @Inject
-  GerritCachedGitRepositoryManager(
+  CachedGitRepositoryManager(
       LocalDiskRepositoryManager repoManager, CachedRefRepository.Factory repoWrapperFactory) {
     this.repoManager = repoManager;
     this.repoWrapperFactory = repoWrapperFactory;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefDatabase.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefDatabase.java
similarity index 98%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefDatabase.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefDatabase.java
index fdbca56..7ad9ff6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefDatabase.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefDatabase.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefRepository.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefRepository.java
similarity index 99%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefRepository.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefRepository.java
index 86cf9b9..aef1463 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefRepository.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefRepository.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefsModule.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefsModule.java
similarity index 88%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefsModule.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefsModule.java
index 9d6eb2d..8134ee7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/CachedRefsModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefsModule.java
@@ -12,12 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.gerrit.extensions.config.FactoryModule;
 
 public class CachedRefsModule extends FactoryModule {
   @Override
-  protected void configure() {
-  }
+  protected void configure() {}
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/DelegateRepository.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/DelegateRepository.java
similarity index 97%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/DelegateRepository.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/DelegateRepository.java
index 1323398..b0f831e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/DelegateRepository.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/DelegateRepository.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import java.io.IOException;
 import org.eclipse.jgit.attributes.AttributesNodeProvider;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/LibDbModule.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java
similarity index 94%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/LibDbModule.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java
index 21300d4..109126d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/LibDbModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import static com.google.inject.Scopes.SINGLETON;
 
@@ -49,7 +49,7 @@
     factory(CachedRefDatabase.Factory.class);
     factory(CachedRefRepository.Factory.class);
 
-    bind(GitRepositoryManager.class).to(GerritCachedGitRepositoryManager.class);
+    bind(GitRepositoryManager.class).to(CachedGitRepositoryManager.class);
 
     // part responsible for physical repositories handling
     listener().to(LocalDiskRepositoryManager.Lifecycle.class);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/LibSysModule.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibSysModule.java
similarity index 69%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/LibSysModule.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibSysModule.java
index 7e93baf..c34f86d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/LibSysModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibSysModule.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.common.flogger.FluentLogger;
 import com.google.gerrit.extensions.events.LifecycleListener;
@@ -27,35 +27,34 @@
 
   @Override
   protected void configure() {
-    install(RefByNameGerritCache.module());
-    listener().to(RefByNameGerritCacheSetter.class);
+    install(RefByNameCacheImpl.module());
+    listener().to(RefByNameCacheSetter.class);
     logger.atInfo().log("Sys library loaded");
   }
 
   @Singleton
-  private static class RefByNameGerritCacheSetter implements LifecycleListener {
-    private final RefByNameGerritCache refByNameGerritCache;
+  private static class RefByNameCacheSetter implements LifecycleListener {
+    private final RefByNameCacheImpl refByNameCache;
     private final DynamicItem<RefByNameCache> cacheRef;
     private RegistrationHandle handle;
 
     @Inject
-    RefByNameGerritCacheSetter(
-        RefByNameGerritCache refByNameGerritCache, DynamicItem<RefByNameCache> cacheRef) {
-      this.refByNameGerritCache = refByNameGerritCache;
+    RefByNameCacheSetter(RefByNameCacheImpl refByNameCache, DynamicItem<RefByNameCache> cacheRef) {
+      this.refByNameCache = refByNameCache;
       this.cacheRef = cacheRef;
     }
 
     @Override
     public void start() {
-      handle = cacheRef.set(refByNameGerritCache, "gerrit");
-      logger.atInfo().log("Gerrit-cache-backed RefDB loaded");
+      handle = cacheRef.set(refByNameCache, "gerrit");
+      logger.atInfo().log("Cache-backed RefDB loaded");
     }
 
     @Override
     public void stop() {
       if (handle != null) {
         handle.remove();
-        logger.atInfo().log("Gerrit-cache-backed RefDB unloaded");
+        logger.atInfo().log("Cache-backed RefDB unloaded");
       }
     }
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/NoOpRefByNameCache.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/NoOpRefByNameCache.java
similarity index 95%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/NoOpRefByNameCache.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/NoOpRefByNameCache.java
index 44b6abb..a04b9dc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/NoOpRefByNameCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/NoOpRefByNameCache.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.common.flogger.FluentLogger;
 import java.util.Optional;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameCache.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCache.java
similarity index 93%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameCache.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCache.java
index 69fabfc..cc498f0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCache.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import java.util.Optional;
 import java.util.concurrent.Callable;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameGerritCache.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCacheImpl.java
similarity index 91%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameGerritCache.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCacheImpl.java
index e9fc2b7..73face3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameGerritCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCacheImpl.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.common.cache.Cache;
 import com.google.common.flogger.FluentLogger;
@@ -27,7 +27,7 @@
 import org.eclipse.jgit.lib.Ref;
 
 @Singleton
-class RefByNameGerritCache implements RefByNameCache {
+class RefByNameCacheImpl implements RefByNameCache {
   private static final FluentLogger logger = FluentLogger.forEnclosingClass();
   private static final String REF_BY_NAME = "ref_by_name";
 
@@ -43,7 +43,7 @@
   private final Cache<String, Optional<Ref>> refByName;
 
   @Inject
-  RefByNameGerritCache(@Named(REF_BY_NAME) Cache<String, Optional<Ref>> refByName) {
+  RefByNameCacheImpl(@Named(REF_BY_NAME) Cache<String, Optional<Ref>> refByName) {
     this.refByName = refByName;
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameCacheWrapper.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCacheWrapper.java
similarity index 96%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameCacheWrapper.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCacheWrapper.java
index 9ce127a..b82b129 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefByNameCacheWrapper.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefByNameCacheWrapper.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.common.annotations.VisibleForTesting;
 import com.google.gerrit.extensions.registration.DynamicItem;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefRenameWithCacheUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefRenameWithCacheUpdate.java
similarity index 97%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefRenameWithCacheUpdate.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefRenameWithCacheUpdate.java
index 7bb9a46..f6debce 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefRenameWithCacheUpdate.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefRenameWithCacheUpdate.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefUpdateWithCacheUpdate.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefUpdateWithCacheUpdate.java
similarity index 98%
rename from src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefUpdateWithCacheUpdate.java
rename to src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefUpdateWithCacheUpdate.java
index a8be44d..76579ce 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/RefUpdateWithCacheUpdate.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/RefUpdateWithCacheUpdate.java
@@ -1,4 +1,4 @@
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import com.google.inject.Inject;
 import com.google.inject.assistedinject.Assisted;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/GerritCachedRefDbIT.java b/src/test/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefDbIT.java
similarity index 67%
rename from src/test/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/GerritCachedRefDbIT.java
rename to src/test/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefDbIT.java
index a6168da..23fb9ac 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/gerritcachedrefdb/GerritCachedRefDbIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/cachedrefdb/CachedRefDbIT.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.gerritcachedrefdb;
+package com.googlesource.gerrit.plugins.cachedrefdb;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -28,7 +28,7 @@
 
 @UseLocalDisk
 @NoHttpd
-public class GerritCachedRefDbIT extends AbstractDaemonTest {
+public class CachedRefDbIT extends AbstractDaemonTest {
   @Inject private GitRepositoryManager gitRepoManager;
 
   @Inject private RefByNameCacheWrapper refByNameCacheWrapper;
@@ -36,29 +36,29 @@
   @Test
   @GerritConfig(
       name = "gerrit.installDbModule",
-      value = "com.googlesource.gerrit.plugins.gerritcachedrefdb.LibDbModule")
+      value = "com.googlesource.gerrit.plugins.cachedrefdb.LibDbModule")
   @GerritConfig(
       name = "gerrit.installModule",
-      value = "com.googlesource.gerrit.plugins.gerritcachedrefdb.LibSysModule")
-  public void shouldBeAbleToInstallGerritCachedGitRepoManager() {
-    assertThat(gitRepoManager).isInstanceOf(GerritCachedGitRepositoryManager.class);
-    assertThat(((GerritCachedGitRepositoryManager) gitRepoManager).getRepoManager().getClass())
+      value = "com.googlesource.gerrit.plugins.cachedrefdb.LibSysModule")
+  public void shouldBeAbleToInstallCachedGitRepoManager() {
+    assertThat(gitRepoManager).isInstanceOf(CachedGitRepositoryManager.class);
+    assertThat(((CachedGitRepositoryManager) gitRepoManager).getRepoManager().getClass())
         .isEqualTo(LocalDiskRepositoryManager.class);
-    assertThat(refByNameCacheWrapper.cache()).isInstanceOf(RefByNameGerritCache.class);
+    assertThat(refByNameCacheWrapper.cache()).isInstanceOf(RefByNameCacheImpl.class);
   }
 
   @Test
   @GerritConfig(
       name = "gerrit.installDbModule",
-      value = "com.googlesource.gerrit.plugins.gerritcachedrefdb.LibDbModule")
+      value = "com.googlesource.gerrit.plugins.cachedrefdb.LibDbModule")
   @GerritConfig(
       name = "gerrit.installModule",
-      value = "com.googlesource.gerrit.plugins.gerritcachedrefdb.LibSysModule")
+      value = "com.googlesource.gerrit.plugins.cachedrefdb.LibSysModule")
   @GerritConfig(name = "repository.r1.basePath", value = "/tmp/git1")
   public void shouldMultiBaseRepoManagerBeUsedWhenConfigured() {
-    assertThat(gitRepoManager).isInstanceOf(GerritCachedGitRepositoryManager.class);
-    assertThat(((GerritCachedGitRepositoryManager) gitRepoManager).getRepoManager())
+    assertThat(gitRepoManager).isInstanceOf(CachedGitRepositoryManager.class);
+    assertThat(((CachedGitRepositoryManager) gitRepoManager).getRepoManager())
         .isInstanceOf(MultiBaseLocalDiskRepositoryManager.class);
-    assertThat(refByNameCacheWrapper.cache()).isInstanceOf(RefByNameGerritCache.class);
+    assertThat(refByNameCacheWrapper.cache()).isInstanceOf(RefByNameCacheImpl.class);
   }
 }
