diff --git a/src/com/google/typography/font/compression/AdvWidth.java b/src/com/google/typography/font/compression/AdvWidth.java
index a95a1cd..f3d936b 100644
--- a/src/com/google/typography/font/compression/AdvWidth.java
+++ b/src/com/google/typography/font/compression/AdvWidth.java
@@ -15,6 +15,7 @@
  * @author raph@google.com (Raph Levien)
  */
 public class AdvWidth {
+
   public static WritableFontData encode(Font font) {
     HorizontalMetricsTable hmtx = font.getTable(Tag.hmtx);
     int nMetrics = hmtx.numberOfHMetrics();
diff --git a/src/com/google/typography/font/compression/CmapEncoder.java b/src/com/google/typography/font/compression/CmapEncoder.java
index f461831..2aed40e 100644
--- a/src/com/google/typography/font/compression/CmapEncoder.java
+++ b/src/com/google/typography/font/compression/CmapEncoder.java
@@ -17,11 +17,12 @@
 import java.util.Map;
 
 /**
- * @author raph@google.com (Raph Levien)
- *
  * Experimental CMap encoder, based primarily on writing the _inverse_ encoding.
+ *
+ * @author raph@google.com (Raph Levien)
  */
 public class CmapEncoder {
+
   public static byte[] encode(Font font) {
     int nGlyphs = font.<MaximumProfileTable>getTable(Tag.maxp).numGlyphs();
     CMapTable cmapTable = font.getTable(Tag.cmap);
diff --git a/src/com/google/typography/font/compression/CompressionRunner.java b/src/com/google/typography/font/compression/CompressionRunner.java
index 97a8e6b..855005e 100644
--- a/src/com/google/typography/font/compression/CompressionRunner.java
+++ b/src/com/google/typography/font/compression/CompressionRunner.java
@@ -257,7 +257,7 @@
     } else if (lastBase.equals("woff")) {
       result = toBytes(new WoffWriter().convert(font));
     } else if (lastBase.equals("woff2")) {
-      result = toBytes(new Woff2Writer(lastArgs).convert(srcFont, font));
+      result = toBytes(new Woff2Writer(lastArgs).convert(font));
     } else if (lastBase.equals("eot")) {
       result = toBytes(new EOTWriter(true).convert(font));
     } else if (lastBase.equals("uncomp")) {
diff --git a/src/com/google/typography/font/compression/GlyfEncoder.java b/src/com/google/typography/font/compression/GlyfEncoder.java
index ebaa80e..37125f0 100644
--- a/src/com/google/typography/font/compression/GlyfEncoder.java
+++ b/src/com/google/typography/font/compression/GlyfEncoder.java
@@ -21,10 +21,10 @@
 import java.util.List;
 
 /**
- * @author Raph Levien
- *
  * Implementation of compression of CTF glyph data, as per sections 5.6-5.10 and 6 of the spec.
  * This is a hacked-up version with a number of options, for experimenting.
+ *
+ * @author Raph Levien
  */
 public class GlyfEncoder {
 
diff --git a/src/com/google/typography/font/compression/GzipUtil.java b/src/com/google/typography/font/compression/GzipUtil.java
index af04b8a..75fac1b 100644
--- a/src/com/google/typography/font/compression/GzipUtil.java
+++ b/src/com/google/typography/font/compression/GzipUtil.java
@@ -11,8 +11,11 @@
 
 /**
  * Simple utility for GZIP compression
+ *
+ * @author Raph Levien
  */
 public class GzipUtil {
+
   public static byte[] deflate(byte[] bytes) {
     try {
       ByteArrayOutputStream baos = new ByteArrayOutputStream();
diff --git a/src/com/google/typography/font/compression/KernEncoder.java b/src/com/google/typography/font/compression/KernEncoder.java
index c3df4c7..7b86633 100644
--- a/src/com/google/typography/font/compression/KernEncoder.java
+++ b/src/com/google/typography/font/compression/KernEncoder.java
@@ -11,13 +11,14 @@
 import com.google.typography.font.sfntly.table.Table;
 
 /**
- * @author raph@google.com (Raph Levien)
- *
  * Encoder for "kern" table. This probably won't go in the spec because an even more
  * effective technique would be to do class kerning in the GDEF tables, but, even so, I wanted
  * to capture the stats.
+ *
+ * @author raph@google.com (Raph Levien)
  */
 public class KernEncoder {
+
   public static WritableFontData encode(Font font) {
     Table kernTable = font.getTable(Tag.kern);
     ReadableFontData data = kernTable.readFontData();
diff --git a/src/com/google/typography/font/compression/StatsCollector.java b/src/com/google/typography/font/compression/StatsCollector.java
index 6eb7154..57be801 100644
--- a/src/com/google/typography/font/compression/StatsCollector.java
+++ b/src/com/google/typography/font/compression/StatsCollector.java
@@ -16,6 +16,7 @@
  * @author raph@google.com (Raph Levien)
  */
 public class StatsCollector {
+
   private final List<Double> values;
 
   public StatsCollector() {
diff --git a/src/com/google/typography/font/compression/Woff2Writer.java b/src/com/google/typography/font/compression/Woff2Writer.java
index 7f51d0f..c13647f 100644
--- a/src/com/google/typography/font/compression/Woff2Writer.java
+++ b/src/com/google/typography/font/compression/Woff2Writer.java
@@ -15,7 +15,11 @@
 import java.util.List;
 import java.util.TreeSet;
 
+/**
+ * @author raph@google.com (Raph Levien)
+ */
 public class Woff2Writer {
+
   private static final long SIGNATURE = 0x774f4632;
   private static final int WOFF2_HEADER_SIZE = 44;
   private static final int TABLE_ENTRY_SIZE = 5 * 4;
@@ -25,7 +29,7 @@
   private final CompressionType compressionType;
   private final boolean longForm;
 
-  Woff2Writer(String args) {
+  public Woff2Writer(String args) {
     CompressionType compressionType = CompressionType.NONE;
     boolean longForm = false;
     for (String arg : args.split(",")) {
@@ -85,7 +89,7 @@
       .put(Tag.intValue(new byte[] {'G', 'S', 'U', 'B'}), 28)
       .build();
 
-  public WritableFontData convert(Font srcFont, Font font) {
+  public WritableFontData convert(Font font) {
     List<TableDirectoryEntry> entries = createTableDirectoryEntries(font);
     int size = computeCompressedFontSize(entries);
     WritableFontData writableFontData = WritableFontData.createWritableFontData(size);
