diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
index 4e917c4..f066d40 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -18,7 +18,6 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 
-import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableSet;
@@ -204,14 +203,7 @@
                 }
               })
           .toSortedList(
-              Ordering.natural()
-                  .onResultOf(
-                      new Function<Ref, String>() {
-                        @Override
-                        public String apply(Ref ref) {
-                          return ref.getName();
-                        }
-                      }));
+              Ordering.natural().onResultOf(r -> r.getName()));
     }
 
     private AbstractTreeIterator getTreeIterator(RevCommit commit) throws IOException {
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
index 5aa4119..d40962b 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -17,7 +17,6 @@
 import static com.google.common.base.Preconditions.checkNotNull;
 import static javax.servlet.http.HttpServletResponse.SC_NOT_FOUND;
 
-import com.google.common.base.Function;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -139,19 +138,17 @@
         limit);
   }
 
-  private static Ordering<Ref> tagComparator(final TimeCache timeCache, final RevWalk walk) {
+  private static Long getTime(RevWalk walk, TimeCache timeCache, Ref ref) {
+    try {
+      return timeCache.getTime(walk, ref.getObjectId());
+    } catch (IOException e) {
+      throw new UncheckedExecutionException(e);
+    }
+  }
+
+  private static Ordering<Ref> tagComparator(TimeCache timeCache, RevWalk walk) {
     return Ordering.natural()
-        .onResultOf(
-            new Function<Ref, Long>() {
-              @Override
-              public Long apply(Ref ref) {
-                try {
-                  return timeCache.getTime(walk, ref.getObjectId());
-                } catch (IOException e) {
-                  throw new UncheckedExecutionException(e);
-                }
-              }
-            })
+        .onResultOf((Ref r) -> getTime(walk, timeCache, r))
         .reverse()
         .compound(RefComparator.INSTANCE);
   }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java b/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
index 657bba8..3a700d3 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/VisibilityCache.java
@@ -22,7 +22,6 @@
 import static org.eclipse.jgit.lib.Constants.R_HEADS;
 import static org.eclipse.jgit.lib.Constants.R_TAGS;
 
-import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.base.Throwables;
@@ -189,15 +188,7 @@
         commit,
         Collections2.transform(
             refs,
-            new Function<Ref, ObjectId>() {
-              @Override
-              public ObjectId apply(Ref ref) {
-                if (ref.getPeeledObjectId() != null) {
-                  return ref.getPeeledObjectId();
-                }
-                return ref.getObjectId();
-              }
-            }));
+            r -> r.getPeeledObjectId() != null ? r.getPeeledObjectId() : r.getObjectId()));
   }
 
   private boolean isReachableFrom(RevWalk walk, RevCommit commit, Collection<ObjectId> ids)
