diff --git a/README.md b/README.md
index bdcc00d..1643f01 100644
--- a/README.md
+++ b/README.md
@@ -76,6 +76,19 @@
   com.googlesource.gerrit.plugins.cachedrefdb.LibSysModule
 ```
 
+> NOTE: There are situations where the binding of the module to the Gerrit's
+> GitRepositoryManager is not desired; e.g., when using this module together
+> with others that are trying to override it at the same time.
+>
+> It is possible to just load the module using the following two options:
+>
+> ```
+> git config --file ${GERRIT_SITE}/etc/gerrit.config --add gerrit.installDbModule\
+>   com.googlesource.gerrit.plugins.cachedrefdb.LibModule
+> git config --file ${GERRIT_SITE}/etc/gerrit.config --add gerrit.installModule\
+>   com.googlesource.gerrit.plugins.cachedrefdb.LibSysModule
+> ```
+
 By default cache can hold up to `1024` refs which will not be sufficient for
 any production site therefore one can configure it through the standard Gerrit
 cache configuration means e.g.
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java
index 109126d..2bbf063 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibDbModule.java
@@ -14,10 +14,7 @@
 
 package com.googlesource.gerrit.plugins.cachedrefdb;
 
-import static com.google.inject.Scopes.SINGLETON;
-
 import com.google.common.flogger.FluentLogger;
-import com.google.gerrit.extensions.registration.DynamicItem;
 import com.google.gerrit.lifecycle.LifecycleModule;
 import com.google.gerrit.server.ModuleImpl;
 import com.google.gerrit.server.config.RepositoryConfig;
@@ -40,14 +37,7 @@
 
   @Override
   protected void configure() {
-    DynamicItem.itemOf(binder(), RefByNameCache.class);
-    DynamicItem.bind(binder(), RefByNameCache.class).to(NoOpRefByNameCache.class).in(SINGLETON);
-
-    factory(RefUpdateWithCacheUpdate.Factory.class);
-    factory(RefRenameWithCacheUpdate.Factory.class);
-    factory(BatchRefUpdateWithCacheUpdate.Factory.class);
-    factory(CachedRefDatabase.Factory.class);
-    factory(CachedRefRepository.Factory.class);
+    install(new LibModule());
 
     bind(GitRepositoryManager.class).to(CachedGitRepositoryManager.class);
 
@@ -56,6 +46,6 @@
     if (!repoConfig.getAllBasePaths().isEmpty()) {
       bind(LocalDiskRepositoryManager.class).to(MultiBaseLocalDiskRepositoryManager.class);
     }
-    logger.atInfo().log("DB library loaded");
+    logger.atInfo().log("GitRepositoryManager bind completed");
   }
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibModule.java b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibModule.java
new file mode 100644
index 0000000..8e9eb71
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/cachedrefdb/LibModule.java
@@ -0,0 +1,39 @@
+// Copyright (C) 2022 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.googlesource.gerrit.plugins.cachedrefdb;
+
+import static com.google.inject.Scopes.SINGLETON;
+
+import com.google.common.flogger.FluentLogger;
+import com.google.gerrit.extensions.registration.DynamicItem;
+import com.google.gerrit.lifecycle.LifecycleModule;
+
+public class LibModule extends LifecycleModule {
+  private static final FluentLogger logger = FluentLogger.forEnclosingClass();
+
+  @Override
+  protected void configure() {
+    DynamicItem.itemOf(binder(), RefByNameCache.class);
+    DynamicItem.bind(binder(), RefByNameCache.class).to(NoOpRefByNameCache.class).in(SINGLETON);
+
+    factory(RefUpdateWithCacheUpdate.Factory.class);
+    factory(RefRenameWithCacheUpdate.Factory.class);
+    factory(BatchRefUpdateWithCacheUpdate.Factory.class);
+    factory(CachedRefDatabase.Factory.class);
+    factory(CachedRefRepository.Factory.class);
+
+    logger.atInfo().log("Ref repository and db library loaded");
+  }
+}
