diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
index accaec9..c313f4d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/Module.java
@@ -38,7 +38,7 @@
   @Override
   protected void configure() {
     install(new XDocLoader.Module());
-    factory(XDocConfig.Factory.class);
+    factory(XDocProjectConfig.Factory.class);
 
     DynamicSet.bind(binder(), ProjectWebLink.class)
         .to(XDocWebLink.class);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java
index 2f14e06..32fb4e0 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocFileWebLink.java
@@ -30,7 +30,7 @@
       @PluginName String pluginName,
       GitRepositoryManager repoManager,
       @Named(XDocLoader.Module.X_DOC_RESOURCES) LoadingCache<String, Resource> cache,
-      XDocConfig.Factory cfgFactory,
+      XDocProjectConfig.Factory cfgFactory,
       ProjectCache projectCache) {
     super(pluginName, repoManager, cache, cfgFactory, projectCache);
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocGlobalConfig.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocGlobalConfig.java
new file mode 100644
index 0000000..df6ff5a
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocGlobalConfig.java
@@ -0,0 +1,37 @@
+// Copyright (C) 2014 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.xdocs;
+
+import org.eclipse.jgit.lib.Config;
+
+public class XDocGlobalConfig {
+  private static final String SECTION_FORMATTER = "formatter";
+  private static final String KEY_ALLOW_HTML = "allowHtml";
+
+  enum Formatter {
+    MARKDOWN;
+  }
+
+  private final Config cfg;
+
+  XDocGlobalConfig(Config cfg) {
+    this.cfg = cfg;
+  }
+
+  boolean isHtmlAllowed(Formatter formatter) {
+    return cfg.getBoolean(SECTION_FORMATTER, formatter.name(),
+        KEY_ALLOW_HTML, false);
+  }
+}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
index e4ed3d4..76cfe34 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocLoader.java
@@ -33,7 +33,8 @@
 import com.google.inject.Provider;
 import com.google.inject.Singleton;
 
-import org.eclipse.jgit.lib.Config;
+import com.googlesource.gerrit.plugins.xdocs.XDocGlobalConfig.Formatter;
+
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectLoader;
 import org.eclipse.jgit.lib.Repository;
@@ -52,13 +53,6 @@
 public class XDocLoader extends CacheLoader<String, Resource> {
   private static final String DEFAULT_HOST = "review.example.com";
 
-  private static final String SECTION_FORMATTER = "formatter";
-  private static final String KEY_ALLOW_HTML = "allowHtml";
-
-  private enum Formatter {
-    MARKDOWN;
-  }
-
   private final GitRepositoryManager repoManager;
   private final Provider<String> webUrl;
   private final String pluginName;
@@ -78,7 +72,7 @@
   @Override
   public Resource load(String strKey) throws Exception {
     XDocResourceKey key = XDocResourceKey.fromString(strKey);
-    Config cfg = cfgFactory.getGlobalPluginConfig(pluginName);
+    XDocGlobalConfig cfg = new XDocGlobalConfig(cfgFactory.getGlobalPluginConfig(pluginName));
     Repository repo = repoManager.openRepository(key.getProject());
     try {
       RevWalk rw = new RevWalk(repo);
@@ -109,12 +103,11 @@
     }
   }
 
-  private Resource getMarkdownAsHtmlResource(Config cfg,
+  private Resource getMarkdownAsHtmlResource(XDocGlobalConfig cfg,
       Project.NameKey project, String md, int lastModified)
       throws IOException {
     MarkdownFormatter f = new MarkdownFormatter();
-    if (!cfg.getBoolean(SECTION_FORMATTER, Formatter.MARKDOWN.name(),
-        KEY_ALLOW_HTML, false)) {
+    if (!cfg.isHtmlAllowed(Formatter.MARKDOWN)) {
       f.suppressHtml();
     }
     byte[] html = f.markdownToDocHtml(replaceMacros(project, md), UTF_8.name());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocConfig.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocProjectConfig.java
similarity index 89%
rename from src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocConfig.java
rename to src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocProjectConfig.java
index 8af2182..f3c931a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocProjectConfig.java
@@ -23,9 +23,9 @@
 
 import org.eclipse.jgit.lib.Config;
 
-public class XDocConfig {
+public class XDocProjectConfig {
   interface Factory {
-    XDocConfig create(ProjectState project);
+    XDocProjectConfig create(ProjectState project);
   }
 
   private static final String SECTION_WEB = "web";
@@ -35,7 +35,7 @@
   private final Config cfg;
 
   @Inject
-  XDocConfig(@PluginName String pluginName, PluginConfigFactory cfgFactory,
+  XDocProjectConfig(@PluginName String pluginName, PluginConfigFactory cfgFactory,
       @Assisted ProjectState project) {
     this.cfg = cfgFactory.getProjectPluginConfigWithInheritance(project, pluginName);
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
index 64e3d60..ab56e70 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocServlet.java
@@ -77,7 +77,7 @@
   private final GitRepositoryManager repoManager;
   private final LoadingCache<String, Resource> docCache;
   private final FileTypeRegistry fileTypeRegistry;
-  private final XDocConfig.Factory cfgFactory;
+  private final XDocProjectConfig.Factory cfgFactory;
 
   @Inject
   XDocServlet(
@@ -88,7 +88,7 @@
       GitRepositoryManager repoManager,
       @Named(XDocLoader.Module.X_DOC_RESOURCES) LoadingCache<String, Resource> cache,
       FileTypeRegistry fileTypeRegistry,
-      XDocConfig.Factory cfgFactory) {
+      XDocProjectConfig.Factory cfgFactory) {
     this.db = db;
     this.projectControlFactory = projectControlFactory;
     this.projectCache = projectCache;
@@ -114,7 +114,7 @@
       Resource.NOT_FOUND.send(req, res);
       return;
     }
-    XDocConfig cfg = cfgFactory.create(state);
+    XDocProjectConfig cfg = cfgFactory.create(state);
     if (key.file == null) {
       res.sendRedirect(getRedirectUrl(req, key, cfg));
       return;
@@ -251,7 +251,7 @@
   }
 
   private String getRedirectUrl(HttpServletRequest req, ResourceKey key,
-      XDocConfig cfg) {
+      XDocProjectConfig cfg) {
     StringBuilder redirectUrl = new StringBuilder();
     redirectUrl.append(req.getRequestURL().substring(0,
         req.getRequestURL().length() - req.getRequestURI().length()));
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
index 5355572..1838b0f 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/XDocWebLink.java
@@ -44,7 +44,7 @@
   private final String pluginName;
   private final GitRepositoryManager repoManager;
   private final LoadingCache<String, Resource> docCache;
-  private final XDocConfig.Factory cfgFactory;
+  private final XDocProjectConfig.Factory cfgFactory;
   private final ProjectCache projectCache;
 
   @Inject
@@ -52,7 +52,7 @@
       @PluginName String pluginName,
       GitRepositoryManager repoManager,
       @Named(XDocLoader.Module.X_DOC_RESOURCES) LoadingCache<String, Resource> cache,
-      XDocConfig.Factory cfgFactory,
+      XDocProjectConfig.Factory cfgFactory,
       ProjectCache projectCache) {
     this.pluginName = pluginName;
     this.repoManager = repoManager;
