diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java
index 857fa91..927c5c2 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/BlobSoyData.java
@@ -30,7 +30,6 @@
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectLoader;
 import org.eclipse.jgit.lib.ObjectReader;
-import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.util.RawParseUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -58,11 +57,6 @@
   private final GitilesView view;
   private final ObjectReader reader;
 
-  // TODO(dborowitz): Remove this constructor.
-  public BlobSoyData(RevWalk walk, GitilesView view) {
-    this(walk.getObjectReader(), view);
-  }
-
   public BlobSoyData(ObjectReader reader, GitilesView view) {
     this.reader = reader;
     this.view = view;
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
index 987ade8..d065a45 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RevisionServlet.java
@@ -95,12 +95,12 @@
             case OBJ_TREE:
               soyObjects.add(ImmutableMap.of(
                   "type", Constants.TYPE_TREE,
-                  "data", new TreeSoyData(walk, view).toSoyData(obj)));
+                  "data", new TreeSoyData(walk.getObjectReader(), view).toSoyData(obj)));
               break;
             case OBJ_BLOB:
               soyObjects.add(ImmutableMap.of(
                   "type", Constants.TYPE_BLOB,
-                  "data", new BlobSoyData(walk, view).toSoyData(obj)));
+                  "data", new BlobSoyData(walk.getObjectReader(), view).toSoyData(obj)));
               hasBlob = true;
               break;
             case OBJ_TAG:
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
index 428de98..2c55a70 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/TreeSoyData.java
@@ -26,7 +26,6 @@
 import org.eclipse.jgit.errors.MissingObjectException;
 import org.eclipse.jgit.lib.ObjectId;
 import org.eclipse.jgit.lib.ObjectReader;
-import org.eclipse.jgit.revwalk.RevWalk;
 import org.eclipse.jgit.treewalk.TreeWalk;
 
 import java.io.IOException;
@@ -74,11 +73,6 @@
   private final GitilesView view;
   private ArchiveFormat archiveFormat;
 
-  // TODO(dborowitz): Remove this constructor.
-  public TreeSoyData(RevWalk rw, GitilesView view) {
-    this(rw.getObjectReader(), view);
-  }
-
   public TreeSoyData(ObjectReader reader, GitilesView view) {
     this.reader = reader;
     this.view = view;
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
index 2b37f47..cba7dee 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/blame/BlameServlet.java
@@ -77,7 +77,8 @@
       }
 
       String title = "Blame - " + view.getPathPart();
-      Map<String, ?> blobData = new BlobSoyData(rw, view).toSoyData(view.getPathPart(), blobId);
+      Map<String, ?> blobData = new BlobSoyData(rw.getObjectReader(), view)
+          .toSoyData(view.getPathPart(), blobId);
       if (blobData.get("lines") != null) {
         List<Region> regions = cache.get(repo, commit, view.getPathPart());
         if (regions.isEmpty()) {
