diff --git a/DESIGN.md b/DESIGN.md
index b466ba6..4b253f1 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -500,5 +500,3 @@
 - Serve RW/RW traffic based on the project name/ref-name.
 
 - Balance traffic with "locally-aware" policies based on historical data
-
-- Preventing split-brain in case of temporary sites isolation
diff --git a/README.md b/README.md
index 9f03102..4c84e72 100644
--- a/README.md
+++ b/README.md
@@ -85,10 +85,10 @@
 [kafka "subscriber"]
   enabled = true
 
-[split-brain]
+[ref-database]
   enabled = true
 
-[split-brain "zookeeper"]
+[ref-database "zookeeper"]
   connectString = "localhost:2181"
 ```
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Configuration.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Configuration.java
index e437771..683bd81 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Configuration.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Configuration.java
@@ -71,7 +71,7 @@
   private final Index index;
   private final KafkaSubscriber subscriber;
   private final Kafka kafka;
-  private final SplitBrain splitBrain;
+  private final RefDatabaseConfig splitBrain;
 
   @Inject
   Configuration(PluginConfigFactory pluginConfigFactory, @PluginName String pluginName) {
@@ -86,10 +86,10 @@
     cache = new Cache(cfg);
     event = new Event(cfg);
     index = new Index(cfg);
-    splitBrain = new SplitBrain(cfg);
+    splitBrain = new RefDatabaseConfig(cfg);
   }
 
-  public SplitBrain getSplitBrain() {
+  public RefDatabaseConfig getRefDatabaseConfig() {
     return splitBrain;
   }
 
@@ -460,15 +460,21 @@
 
     private Zookeeper(Config cfg) {
       connectionString =
-          getString(cfg, SplitBrain.SECTION, SUBSECTION, KEY_CONNECT_STRING, DEFAULT_ZK_CONNECT);
-      root = getString(cfg, SplitBrain.SECTION, SUBSECTION, KEY_ROOT_NODE, "gerrit/multi-site");
+          getString(
+              cfg, RefDatabaseConfig.SECTION, SUBSECTION, KEY_CONNECT_STRING, DEFAULT_ZK_CONNECT);
+      root =
+          getString(cfg, RefDatabaseConfig.SECTION, SUBSECTION, KEY_ROOT_NODE, "gerrit/multi-site");
       sessionTimeoutMs =
           getInt(
-              cfg, SplitBrain.SECTION, SUBSECTION, KEY_SESSION_TIMEOUT_MS, defaultSessionTimeoutMs);
+              cfg,
+              RefDatabaseConfig.SECTION,
+              SUBSECTION,
+              KEY_SESSION_TIMEOUT_MS,
+              defaultSessionTimeoutMs);
       connectionTimeoutMs =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_CONNECTION_TIMEOUT_MS,
               defaultConnectionTimeoutMs);
@@ -476,7 +482,7 @@
       baseSleepTimeMs =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_RETRY_POLICY_BASE_SLEEP_TIME_MS,
               DEFAULT_RETRY_POLICY_BASE_SLEEP_TIME_MS);
@@ -484,7 +490,7 @@
       maxSleepTimeMs =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_RETRY_POLICY_MAX_SLEEP_TIME_MS,
               DEFAULT_RETRY_POLICY_MAX_SLEEP_TIME_MS);
@@ -492,7 +498,7 @@
       maxRetries =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_RETRY_POLICY_MAX_RETRIES,
               DEFAULT_RETRY_POLICY_MAX_RETRIES);
@@ -500,7 +506,7 @@
       casBaseSleepTimeMs =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_CAS_RETRY_POLICY_BASE_SLEEP_TIME_MS,
               DEFAULT_CAS_RETRY_POLICY_BASE_SLEEP_TIME_MS);
@@ -508,7 +514,7 @@
       casMaxSleepTimeMs =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_CAS_RETRY_POLICY_MAX_SLEEP_TIME_MS,
               DEFAULT_CAS_RETRY_POLICY_MAX_SLEEP_TIME_MS);
@@ -516,12 +522,13 @@
       casMaxRetries =
           getInt(
               cfg,
-              SplitBrain.SECTION,
+              RefDatabaseConfig.SECTION,
               SUBSECTION,
               KEY_CAS_RETRY_POLICY_MAX_RETRIES,
               DEFAULT_CAS_RETRY_POLICY_MAX_RETRIES);
 
-      migrate = getBoolean(cfg, SplitBrain.SECTION, SUBSECTION, KEY_MIGRATE, DEFAULT_MIGRATE);
+      migrate =
+          getBoolean(cfg, RefDatabaseConfig.SECTION, SUBSECTION, KEY_MIGRATE, DEFAULT_MIGRATE);
 
       checkArgument(StringUtils.isNotEmpty(connectionString), "zookeeper.%s contains no servers");
     }
@@ -555,14 +562,14 @@
     }
   }
 
-  public static class SplitBrain {
+  public static class RefDatabaseConfig {
     private final boolean enabled;
 
     private final Zookeeper zookeeper;
-    static final String SECTION = "split-brain";
+    static final String SECTION = "ref-database";
     static final String ENABLED_KEY = "enabled";
 
-    private SplitBrain(Config cfg) {
+    private RefDatabaseConfig(Config cfg) {
 
       this.enabled = getBoolean(cfg, SECTION, null, ENABLED_KEY, DEFAULT_SPLIT_BRAIN);
       zookeeper = this.enabled ? new Zookeeper(cfg) : null;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
index 4170239..9909013 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/Module.java
@@ -82,7 +82,7 @@
       install(new BrokerForwarderModule(config.kafkaPublisher()));
     }
 
-    if (config.getSplitBrain().enabled()) {
+    if (config.getRefDatabaseConfig().enabled()) {
       install(new ValidationModule(config));
     }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZkValidationModule.java b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZkValidationModule.java
index 0b6b457..4775a86 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZkValidationModule.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZkValidationModule.java
@@ -32,11 +32,12 @@
   @Override
   protected void configure() {
     bind(SharedRefDatabase.class).to(ZkSharedRefDatabase.class);
-    bind(CuratorFramework.class).toInstance(cfg.getSplitBrain().getZookeeper().buildCurator());
+    bind(CuratorFramework.class)
+        .toInstance(cfg.getRefDatabaseConfig().getZookeeper().buildCurator());
     bind(RetryPolicy.class)
         .annotatedWith(Names.named("ZkLockRetryPolicy"))
-        .toInstance(cfg.getSplitBrain().getZookeeper().buildCasRetryPolicy());
+        .toInstance(cfg.getRefDatabaseConfig().getZookeeper().buildCasRetryPolicy());
     bind(ZkSharedRefDatabase.OperationMode.class)
-        .toInstance(cfg.getSplitBrain().getZookeeper().getOperationMode());
+        .toInstance(cfg.getRefDatabaseConfig().getZookeeper().getOperationMode());
   }
 }
diff --git a/src/main/resources/Documentation/config.md b/src/main/resources/Documentation/config.md
index 907bbfe..dee2981 100644
--- a/src/main/resources/Documentation/config.md
+++ b/src/main/resources/Documentation/config.md
@@ -43,10 +43,10 @@
   projectListEventEnabled = true
   streamEventEnabled = true
 
-[split-brain]
+[ref-database]
   enabled = true
 
-[split-brain "zookeeper"]
+[ref-database "zookeeper"]
   connectString = "localhost:2181"
   rootNode = "/gerrit/multi-site"
   sessionTimeoutMs = 1000
@@ -188,65 +188,65 @@
 
     Defaults: 1000
 
-```split-brain.zookeeper.connectString```
+```ref-database.zookeeper.connectString```
 :   Connection string to  zookeeper
 
-```split-brain.zookeeper.rootNode```
+```ref-database.zookeeper.rootNode```
 :   Root node to use under Zookeeper to store/retrieve information
 
     Defaults: "/gerrit/multi-site"
 
 
-```split-brain.zookeeper.sessionTimeoutMs```
+```ref-database.zookeeper.sessionTimeoutMs```
 :   Root node to use under Zookeeper to store/retrieve information
 
     Defaults: 1000
 
-```split-brain.zookeeper.connectionTimeoutMs```
+```ref-database.zookeeper.connectionTimeoutMs```
 :   Root node to use under Zookeeper to store/retrieve information
 
     Defaults: 1000
 
-```split-brain.zookeeper.retryPolicyBaseSleepTimeMs```
+```ref-database.zookeeper.retryPolicyBaseSleepTimeMs```
 :   Configuration for the base sleep timeout (iun ms) to use to create the
     BoundedExponentialBackoffRetry policy used for the Zookeeper connection
 
     Defaults: 1000
 
-```split-brain.zookeeper.retryPolicyMaxSleepTimeMs```
+```ref-database.zookeeper.retryPolicyMaxSleepTimeMs```
 :   Configuration for the max sleep timeout (iun ms) to use to create the
     BoundedExponentialBackoffRetry policy used for the Zookeeper connection
 
     Defaults: 3000
 
-```split-brain.zookeeper.retryPolicyMaxRetries```
+```ref-database.zookeeper.retryPolicyMaxRetries```
 :   Configuration for the max number of retries to use to create the
     BoundedExponentialBackoffRetry policy used for the Zookeeper connection
 
     Defaults: 3
 
-```split-brain.zookeeper.casRetryPolicyBaseSleepTimeMs```
+```ref-database.zookeeper.casRetryPolicyBaseSleepTimeMs```
 :   Configuration for the base sleep timeout (iun ms) to use to create the
     BoundedExponentialBackoffRetry policy used for the Compare and Swap
     operations on Zookeeper
 
     Defaults: 1000
-
-```split-brain.zookeeper.casRetryPolicyMaxSleepTimeMs```
+    
+```ref-database.zookeeper.casRetryPolicyMaxSleepTimeMs```
 :   Configuration for the max sleep timeout (iun ms) to use to create the
     BoundedExponentialBackoffRetry policy used for the Compare and Swap
     operations on Zookeeper
 
     Defaults: 3000
-
-```split-brain.zookeeper.casRetryPolicyMaxRetries```
+    
+```ref-database.zookeeper.casRetryPolicyMaxRetries```
 :   Configuration for the max number of retries to use to create the
     BoundedExponentialBackoffRetry policy used for the Compare and Swap
     operations on Zookeeper
 
     Defaults: 3
 
-```split-brain.zookeeper.migrate```
+```ref-database.zookeeper.migrate```
 :   Set to true when the plugin has been applied to an already existing module
     and there are no entries in Zookeeper for the existing refs. It will handle
     update failures caused by the old refs not existing forcing the creation of
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/ConfigurationTest.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/ConfigurationTest.java
index a066094..bdd5b4e 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/ConfigurationTest.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/ConfigurationTest.java
@@ -33,7 +33,7 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.gerrit.server.config.PluginConfigFactory;
-import com.googlesource.gerrit.plugins.multisite.Configuration.SplitBrain;
+import com.googlesource.gerrit.plugins.multisite.Configuration.RefDatabaseConfig;
 import com.googlesource.gerrit.plugins.multisite.Configuration.Zookeeper;
 import org.eclipse.jgit.lib.Config;
 import org.junit.Before;
@@ -100,19 +100,19 @@
   }
 
   @Test
-  public void testGetEnabledSplitBrain() throws Exception {
-    assertThat(getConfiguration().getSplitBrain().enabled()).isEqualTo(DEFAULT_SPLIT_BRAIN);
+  public void testGetEnabledRefDatabaseConfig() throws Exception {
+    assertThat(getConfiguration().getRefDatabaseConfig().enabled()).isEqualTo(DEFAULT_SPLIT_BRAIN);
 
     globalPluginConfig.setBoolean(
-        SplitBrain.SECTION, null, SplitBrain.ENABLED_KEY, SPLIT_BRAIN_ENABLED);
-    // If split-brain enabled, zookeeper 'connect' is required
+        RefDatabaseConfig.SECTION, null, RefDatabaseConfig.ENABLED_KEY, SPLIT_BRAIN_ENABLED);
+    // If ref-database enabled, zookeeper 'connect' is required
     globalPluginConfig.setString(
-        SplitBrain.SECTION,
+        RefDatabaseConfig.SECTION,
         Zookeeper.SUBSECTION,
         Zookeeper.KEY_CONNECT_STRING,
         Zookeeper.DEFAULT_ZK_CONNECT);
 
-    assertThat(getConfiguration().getSplitBrain().enabled()).isEqualTo(SPLIT_BRAIN_ENABLED);
+    assertThat(getConfiguration().getRefDatabaseConfig().enabled()).isEqualTo(SPLIT_BRAIN_ENABLED);
   }
 
   @Test
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java
index 449c272..9cc4b66 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/kafka/consumer/EventConsumerIT.java
@@ -104,7 +104,7 @@
       config.setString("kafka", null, "bootstrapServers", kafka.getBootstrapServers());
       config.setBoolean("kafka", "publisher", "enabled", true);
       config.setBoolean("kafka", "subscriber", "enabled", true);
-      config.setBoolean("split-brain", null, "enabled", false);
+      config.setBoolean("ref-database", null, "enabled", false);
       Configuration multiSiteConfig = new Configuration(config);
       bind(Configuration.class).toInstance(multiSiteConfig);
       install(new Module(multiSiteConfig, noteDb));
diff --git a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZookeeperTestContainerSupport.java b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZookeeperTestContainerSupport.java
index d479f7f..726ce18 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZookeeperTestContainerSupport.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/multisite/validation/dfsrefdb/zookeeper/ZookeeperTestContainerSupport.java
@@ -74,21 +74,21 @@
     Integer zkHostPort = container.getMappedPort(2181);
     Config splitBrainconfig = new Config();
     String connectString = "localhost:" + zkHostPort;
-    splitBrainconfig.setBoolean("split-brain", null, "enabled", true);
-    splitBrainconfig.setString("split-brain", "zookeeper", "connectString", connectString);
+    splitBrainconfig.setBoolean("ref-database", null, "enabled", true);
+    splitBrainconfig.setString("ref-database", "zookeeper", "connectString", connectString);
     splitBrainconfig.setString(
-        "split-brain",
+        "ref-database",
         Configuration.Zookeeper.SUBSECTION,
         Configuration.Zookeeper.KEY_CONNECT_STRING,
         connectString);
     splitBrainconfig.setBoolean(
-        "split-brain",
+        "ref-database",
         Configuration.Zookeeper.SUBSECTION,
         Configuration.Zookeeper.KEY_MIGRATE,
         migrationMode);
 
     configuration = new Configuration(splitBrainconfig);
-    this.curator = configuration.getSplitBrain().getZookeeper().buildCurator();
+    this.curator = configuration.getRefDatabaseConfig().getZookeeper().buildCurator();
   }
 
   public void cleanup() {
