diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java b/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java
index a5289b0..4f8733b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ConfigUtil.java
@@ -102,19 +102,7 @@
    * @return a new cache builder.
    */
   public static CacheBuilder<Object, Object> getCacheBuilder(Config config, String name) {
-    return getCacheBuilder(CacheBuilder.newBuilder(), config, name);
-  }
-
-  /**
-   * Populate an existing {@link CacheBuilder} from a config.
-   *
-   * @param b cache builder.
-   * @param config JGit config object.
-   * @param name name of the cache subsection under the "cache" section.
-   * @return input cache builder after modifications.
-   */
-  public static <K, V> CacheBuilder<K, V> getCacheBuilder(CacheBuilder<K, V> b, Config config,
-      String name) {
+    CacheBuilder<Object, Object> b = CacheBuilder.newBuilder();
     try {
       if (config.getString("cache", name, "maximumWeight") != null) {
         b.maximumWeight(config.getLong("cache", name, "maximumWeight", 20 << 20));
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 e0a9d76..5c765d8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesFilter.java
@@ -383,8 +383,8 @@
   private void setDefaultVisibilityCache() {
     if (visibilityCache == null) {
       if (config.getSubsections("cache").contains("visibility")) {
-        visibilityCache = new VisibilityCache(
-            false, ConfigUtil.getCacheBuilder(VisibilityCache.newBuilder(), config, "visibility"));
+        visibilityCache =
+            new VisibilityCache(false, ConfigUtil.getCacheBuilder(config, "visibility"));
       } else {
         visibilityCache = new VisibilityCache(false);
       }
@@ -394,8 +394,7 @@
   private void setDefaultTimeCache() {
     if (timeCache == null) {
       if (config.getSubsections("cache").contains("tagTime")) {
-        timeCache = new TimeCache(
-            ConfigUtil.getCacheBuilder(TimeCache.newBuilder(), config, "tagTime"));
+        timeCache = new TimeCache(ConfigUtil.getCacheBuilder(config, "tagTime"));
       } else {
         timeCache = new TimeCache();
       }
@@ -405,8 +404,7 @@
   private void setDefaultBlameCache() {
     if (blameCache == null) {
       if (config.getSubsections("cache").contains("blame")) {
-        blameCache = new BlameCacheImpl(
-            ConfigUtil.getCacheBuilder(BlameCacheImpl.newBuilder(), config, "blame"));
+        blameCache = new BlameCacheImpl(ConfigUtil.getCacheBuilder(config, "blame"));
       } else {
         blameCache = new BlameCacheImpl();
       }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java
index 0f0f662..4cbe60c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameCacheImpl.java
@@ -88,7 +88,7 @@
     return cache;
   }
 
-  public BlameCacheImpl(CacheBuilder<Key, List<Region>> builder) {
+  public BlameCacheImpl(CacheBuilder<? super Key, ? super List<Region>> builder) {
     this.cache = builder.build(new CacheLoader<Key, List<Region>>() {
       @Override
       public List<Region> load(Key key) throws IOException {
