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 6495b5d..83c5436 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DefaultUrls.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DefaultUrls.java
@@ -40,7 +40,7 @@
       this.canonicalHostName = InetAddress.getLocalHost().getCanonicalHostName();
     }
     this.baseGitUrl = checkNotNull(baseGitUrl, "baseGitUrl");
-    this.baseGerritUrl = checkNotNull(baseGerritUrl, "baseGerritUrl");
+    this.baseGerritUrl = baseGerritUrl;
   }
 
   @Override
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 bf87c4a..3f6c35c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesConfig.java
@@ -29,12 +29,11 @@
   private static final String PROPERTY_NAME = "com.google.gitiles.configPath";
   private static final String DEFAULT_PATH = "gitiles.config";
 
-  public static Config loadDefault() throws IOException, ConfigInvalidException {
-    return loadDefault(null);
+  public static File defaultFile() {
+    return defaultFile(null);
   }
 
-  public static Config loadDefault(FilterConfig filterConfig)
-      throws IOException, ConfigInvalidException {
+  public static File defaultFile(FilterConfig filterConfig) {
     String configPath = null;
     if (filterConfig != null) {
       configPath = filterConfig.getInitParameter(FILTER_CONFIG_PARAM);
@@ -42,7 +41,16 @@
     if (configPath == null) {
       configPath = System.getProperty(PROPERTY_NAME, DEFAULT_PATH);
     }
-    FileBasedConfig config = new FileBasedConfig(new File(configPath), FS.DETECTED);
+    return new File(configPath);
+  }
+
+  public static Config loadDefault() throws IOException, ConfigInvalidException {
+    return loadDefault(null);
+  }
+
+  public static Config loadDefault(FilterConfig filterConfig)
+      throws IOException, ConfigInvalidException {
+    FileBasedConfig config = new FileBasedConfig(defaultFile(), FS.DETECTED);
     config.load();
     return config;
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
index 99a2c4e..b926666 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
@@ -20,7 +20,6 @@
 import static com.google.gitiles.ViewFilter.getRegexGroup;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Joiner;
 import com.google.common.base.Objects;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.LinkedListMultimap;
@@ -154,6 +153,7 @@
   private final ListMultimap<GitilesView.Type, Filter> filters = LinkedListMultimap.create();
   private final Map<GitilesView.Type, HttpServlet> servlets = Maps.newHashMap();
 
+  private Config config;
   private Renderer renderer;
   private GitilesUrls urls;
   private Linkifier linkifier;
@@ -166,17 +166,20 @@
   }
 
   GitilesFilter(
+      Config config,
       Renderer renderer,
       GitilesUrls urls,
       GitilesAccess.Factory accessFactory,
       final RepositoryResolver<HttpServletRequest> resolver,
       VisibilityCache visibilityCache) {
-    this.renderer = checkNotNull(renderer, "renderer");
-    this.urls = checkNotNull(urls, "urls");
-    this.accessFactory = checkNotNull(accessFactory, "accessFactory");
-    this.visibilityCache = checkNotNull(visibilityCache, "visibilityCache");
-    this.linkifier = new Linkifier(urls);
-    this.resolver = wrapResolver(resolver);
+    this.config = checkNotNull(config, "config");
+    this.renderer = renderer;
+    this.urls = urls;
+    this.accessFactory = accessFactory;
+    this.visibilityCache = visibilityCache;
+    if (resolver != null) {
+      this.resolver = wrapResolver(resolver);
+    }
   }
 
   @Override
@@ -219,18 +222,23 @@
       case REPOSITORY_INDEX:
         return new RepositoryIndexServlet(renderer, accessFactory);
       case REVISION:
-        return new RevisionServlet(renderer, linkifier);
+        return new RevisionServlet(renderer, linkifier());
       case PATH:
         return new PathServlet(renderer);
       case DIFF:
-        return new DiffServlet(renderer, linkifier);
+        return new DiffServlet(renderer, linkifier());
       case LOG:
-        return new LogServlet(renderer, linkifier);
+        return new LogServlet(renderer, linkifier());
       default:
         throw new IllegalArgumentException("Invalid view type: " + view);
     }
   }
 
+  public synchronized void setRenderer(Renderer renderer) {
+    checkNotInitialized();
+    this.renderer = checkNotNull(renderer, "renderer");
+  }
+
   synchronized void addFilter(GitilesView.Type view, Filter filter) {
     checkNotInitialized();
     filters.put(checkNotNull(view, "view"), checkNotNull(filter, "filter for %s", view));
@@ -259,47 +267,48 @@
     };
   }
 
+  private synchronized Linkifier linkifier() {
+    if (linkifier == null) {
+      checkState(urls != null, "GitilesUrls not yet set");
+      linkifier = new Linkifier(urls);
+    }
+    return linkifier;
+  }
+
   private void setDefaultFields(FilterConfig filterConfig) throws ServletException {
     if (renderer != null && urls != null && accessFactory != null && resolver != null
         && visibilityCache != null) {
       return;
     }
     Config config;
-    try {
-      config = GitilesConfig.loadDefault(filterConfig);
-    } catch (IOException e) {
-      throw new ServletException(e);
-    } catch (ConfigInvalidException e) {
-      throw new ServletException(e);
+    if (this.config != null) {
+      config = this.config;
+    } else {
+      try {
+        config = GitilesConfig.loadDefault(filterConfig);
+      } catch (IOException e) {
+        throw new ServletException(e);
+      } catch (ConfigInvalidException e) {
+        throw new ServletException(e);
+      }
     }
 
     if (renderer == null) {
-      String staticPrefix = filterConfig.getServletContext().getContextPath() + STATIC_PREFIX;
-      String customTemplates = config.getString("gitiles", null, "customTemplates");
-      String siteTitle = Objects.firstNonNull(config.getString("gitiles", null, "siteTitle"),
-          "Gitiles");
-      // TODO(dborowitz): Automatically set to true when run with mvn jetty:run.
-      if (config.getBoolean("gitiles", null, "reloadTemplates", false)) {
-        renderer = new DebugRenderer(staticPrefix, customTemplates,
-            Joiner.on(File.separatorChar).join(System.getProperty("user.dir"),
-                "gitiles-servlet", "src", "main", "resources",
-                "com", "google", "gitiles", "templates"), siteTitle);
-      } else {
-        renderer = new DefaultRenderer(staticPrefix, Renderer.toFileURL(customTemplates),
-            siteTitle);
-      }
+      renderer = new DefaultRenderer(
+          filterConfig.getServletContext().getContextPath() + STATIC_PREFIX,
+          Renderer.toFileURL(config.getString("gitiles", null, "customTemplates")),
+          Objects.firstNonNull(config.getString("gitiles", null, "siteTitle"), "Gitiles"));
     }
     if (urls == null) {
       try {
         urls = new DefaultUrls(
             config.getString("gitiles", null, "canonicalHostName"),
             getBaseGitUrl(config),
-            getGerritUrl(config));
+            config.getString("gitiles", null, "gerritUrl"));
       } catch (UnknownHostException e) {
         throw new ServletException(e);
       }
     }
-    linkifier = new Linkifier(urls);
     if (accessFactory == null || resolver == null) {
       String basePath = config.getString("gitiles", null, "basePath");
       if (basePath == null) {
@@ -345,12 +354,4 @@
     }
     return baseGitUrl;
   }
-
-  private static String getGerritUrl(Config config) throws ServletException {
-    String gerritUrl = config.getString("gitiles", null, "gerritUrl");
-    if (gerritUrl == null) {
-      throw new ServletException("gitiles.gerritUrl not set");
-    }
-    return gerritUrl;
-  }
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java
index c1647ba..be03293 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesServlet.java
@@ -15,10 +15,12 @@
 package com.google.gitiles;
 
 import org.eclipse.jgit.http.server.glue.MetaServlet;
+import org.eclipse.jgit.lib.Config;
 import org.eclipse.jgit.transport.resolver.RepositoryResolver;
 
 import java.util.Enumeration;
 
+import javax.annotation.Nullable;
 import javax.servlet.Filter;
 import javax.servlet.FilterConfig;
 import javax.servlet.ServletConfig;
@@ -42,12 +44,14 @@
   /** The prefix from which static resources are served. */
   public static final String STATIC_PREFIX = "/+static/";
 
-  public GitilesServlet(Renderer renderer,
-      GitilesUrls urls,
-      GitilesAccess.Factory accessFactory,
-      RepositoryResolver<HttpServletRequest> resolver,
-      VisibilityCache visibilityCache) {
-    super(new GitilesFilter(renderer, urls, accessFactory, resolver, visibilityCache));
+  public GitilesServlet(
+      @Nullable Config config,
+      @Nullable Renderer renderer,
+      @Nullable GitilesUrls urls,
+      @Nullable GitilesAccess.Factory accessFactory,
+      @Nullable RepositoryResolver<HttpServletRequest> resolver,
+      @Nullable VisibilityCache visibilityCache) {
+    super(new GitilesFilter(config, renderer, urls, accessFactory, resolver, visibilityCache));
   }
 
   public GitilesServlet() {
