diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
index 116bf29..a44aa96 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/ArchiveFormat.java
@@ -56,7 +56,7 @@
   private final ArchiveCommand.Format<?> format;
   private final String mimeType;
 
-  private ArchiveFormat(String mimeType, ArchiveCommand.Format<?> format) {
+  ArchiveFormat(String mimeType, ArchiveCommand.Format<?> format) {
     this.format = format;
     this.mimeType = mimeType;
     ArchiveCommand.registerFormat(getRegisteredName(), format);
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 4027d91..429acae 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/CommitData.java
@@ -55,7 +55,7 @@
 
 /** Format-independent data about a single commit. */
 class CommitData {
-  static enum Field {
+  enum Field {
     ABBREV_SHA,
     ARCHIVE_TYPE,
     ARCHIVE_URL,
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java b/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java
index e7a2828..affe508 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/DateFormatter.java
@@ -26,7 +26,7 @@
 
 /** Date formatter similar in spirit to JGit's {@code GitDateFormatter}. */
 public class DateFormatter {
-  public static enum Format {
+  public enum Format {
     // Format strings should match org.eclipse.jgit.util.GitDateFormatter except
     // for the timezone suffix.
     DEFAULT("EEE MMM dd HH:mm:ss yyyy"),
@@ -36,7 +36,7 @@
     private final ThreadLocal<DateFormat> defaultFormat;
     private final ThreadLocal<DateFormat> fixedTzFormat;
 
-    private Format(String fmt) {
+    Format(String fmt) {
       this.fmt = fmt;
       this.defaultFormat = new ThreadLocal<>();
       this.fixedTzFormat = new ThreadLocal<>();
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java b/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
index c78ea25..4eca18d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/FormatType.java
@@ -64,7 +64,7 @@
 
   private final String mimeType;
 
-  private FormatType(String mimeType) {
+  FormatType(String mimeType) {
     this.mimeType = mimeType;
   }
 
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
index 2977507..3b5427d 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesAccess.java
@@ -34,7 +34,7 @@
 public interface GitilesAccess {
   /** Factory for per-request access. */
   public interface Factory {
-    public GitilesAccess forRequest(HttpServletRequest req);
+    GitilesAccess forRequest(HttpServletRequest req);
   }
 
   /**
@@ -52,7 +52,7 @@
    *         {@link org.eclipse.jgit.http.server.RepositoryFilter}).
    * @throws IOException if an error occurred.
    */
-  public Map<String, RepositoryDescription> listRepositories(
+  Map<String, RepositoryDescription> listRepositories(
       @Nullable String prefix, Set<String> branches)
       throws ServiceNotEnabledException, ServiceNotAuthorizedException, IOException;
 
@@ -61,21 +61,21 @@
    *     request, and supports {@link Object#equals(Object)} and
    *     {@link Object#hashCode()}. Never null.
    */
-  public Object getUserKey();
+  Object getUserKey();
 
   /** @return the repository name associated with the request. */
-  public String getRepositoryName();
+  String getRepositoryName();
 
   /**
    * @return the description attached to the repository of this request.
    * @throws IOException an error occurred reading the description string from
    *         the repository.
    */
-  public RepositoryDescription getRepositoryDescription() throws IOException;
+  RepositoryDescription getRepositoryDescription() throws IOException;
 
   /**
    * @return configuration to apply to the host/repository for this request.
    * @throws IOException an error occurred reading the configuration.
    */
-  public Config getConfig() throws IOException;
+  Config getConfig() throws IOException;
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
index 6308a76..53dddc9 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesUrls.java
@@ -35,7 +35,7 @@
    * should not be encoded, while almost any other non-alpha, non-numeric
    * character will be encoded using URL style encoding.
    */
-  public static final Function<String, String> NAME_ESCAPER =
+  Function<String, String> NAME_ESCAPER =
       new Function<String, String>() {
         @Override
         public String apply(String s) {
@@ -60,7 +60,7 @@
    * @param req request.
    * @return host name; may be null.
    */
-  public String getHostName(HttpServletRequest req);
+  String getHostName(HttpServletRequest req);
 
   /**
    * Return the base URL for git repositories on this host.
@@ -68,7 +68,7 @@
    * @param req request.
    * @return base URL for git repositories.
    */
-  public String getBaseGitUrl(HttpServletRequest req);
+  String getBaseGitUrl(HttpServletRequest req);
 
   /**
    * Return the base URL for Gerrit projects on this host.
@@ -77,5 +77,5 @@
    * @return base URL for Gerrit Code Review, or null if Gerrit is not
    *     configured.
    */
-  public String getBaseGerritUrl(HttpServletRequest req);
+  String getBaseGerritUrl(HttpServletRequest req);
 }
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
index 22f395c..2d674f8 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/GitilesView.java
@@ -58,7 +58,7 @@
   private static final String DEFAULT_ARCHIVE_EXTENSION = ".tar.gz";
 
   /** All the possible view types supported in the application. */
-  public static enum Type {
+  public enum Type {
     HOST_INDEX,
     REPOSITORY_INDEX,
     REFS,
diff --git a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
index 30470f8..1cba00c 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/PathServlet.java
@@ -95,7 +95,7 @@
   static final String AUTODIVE_PARAM = "autodive";
   static final String NO_AUTODIVE_VALUE = "0";
 
-  static enum FileType {
+  enum FileType {
     TREE(FileMode.TREE),
     SYMLINK(FileMode.SYMLINK),
     REGULAR_FILE(FileMode.REGULAR_FILE),
@@ -104,7 +104,7 @@
 
     private final FileMode mode;
 
-    private FileType(FileMode mode) {
+    FileType(FileMode mode) {
       this.mode = mode;
     }
 
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 63be2af..f434586 100644
--- a/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
+++ b/gitiles-servlet/src/main/java/com/google/gitiles/RefServlet.java
@@ -125,7 +125,7 @@
         return r - l;
       }
 
-      private final boolean isHead(Ref ref) {
+      private boolean isHead(Ref ref) {
         return ref != null && ref.getName().equals(headLeafName);
       }
     }.compound(RefComparator.INSTANCE);
