diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
index e47e3df..a12e240 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BaseServlet.java
@@ -72,6 +72,17 @@
     }
   }
 
+  /**
+   * Put a value into a request's Soy data map.
+   *
+   * @param req in-progress request.
+   * @param key key.
+   * @param value Soy data value.
+   */
+  public static void putSoyData(HttpServletRequest req, String key, Object value) {
+    getData(req).put(key, value);
+  }
+
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse res)
       throws IOException, ServletException {
@@ -160,21 +171,6 @@
   }
 
   /**
-   * Put a value into a request's Soy data map.
-   * <p>
-   * This method is intended to support a composition pattern whereby a
-   * {@link BaseServlet} is wrapped in a different {@link HttpServlet} that can
-   * update its data map.
-   *
-   * @param req in-progress request.
-   * @param key key.
-   * @param value Soy data value.
-   */
-  public void put(HttpServletRequest req, String key, Object value) {
-    getData(req).put(key, value);
-  }
-
-  /**
    * Render data to HTML using Soy.
    *
    * @param req in-progress request.
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultUrls.java b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultUrls.java
index 83c5436..7218a4b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultUrls.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultUrls.java
@@ -27,12 +27,12 @@
  * This implementation uses statically-configured defaults, and thus assumes
  * that the servlet is running a single virtual host.
  */
-class DefaultUrls implements GitilesUrls {
+public class DefaultUrls implements GitilesUrls {
   private final String canonicalHostName;
   private final String baseGitUrl;
   private final String baseGerritUrl;
 
-  DefaultUrls(String canonicalHostName, String baseGitUrl, String baseGerritUrl)
+  public DefaultUrls(String canonicalHostName, String baseGitUrl, String baseGerritUrl)
       throws UnknownHostException {
     if (canonicalHostName != null) {
       this.canonicalHostName = canonicalHostName;
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
index 3f6c35c..640f3ca 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
@@ -50,7 +50,7 @@
 
   public static Config loadDefault(FilterConfig filterConfig)
       throws IOException, ConfigInvalidException {
-    FileBasedConfig config = new FileBasedConfig(defaultFile(), FS.DETECTED);
+    FileBasedConfig config = new FileBasedConfig(defaultFile(filterConfig), FS.DETECTED);
     config.load();
     return config;
   }
diff --git a/pom.xml b/pom.xml
index ebf4149..1869ae4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -168,6 +168,14 @@
         </plugin>
       </plugins>
     </pluginManagement>
+
+    <extensions>
+      <extension>
+        <groupId>com.googlesource.gerrit</groupId>
+        <artifactId>gs-maven-wagon</artifactId>
+        <version>3.3</version>
+      </extension>
+    </extensions>
   </build>
 
   <repositories>
@@ -187,4 +195,12 @@
       <url>http://download.java.net/maven/2/</url>
     </repository>
   </repositories>
+
+  <distributionManagement>
+    <repository>
+      <id>gerrit-maven-repository</id>
+      <url>gs://gerrit-maven</url>
+      <uniqueVersion>true</uniqueVersion>
+    </repository>
+  </distributionManagement>
 </project>
