diff --git a/src/jdiff/HTMLReportGenerator.java b/src/jdiff/HTMLReportGenerator.java
index f45e9ac..c0ca4ff 100755
--- a/src/jdiff/HTMLReportGenerator.java
+++ b/src/jdiff/HTMLReportGenerator.java
@@ -383,6 +383,10 @@
                 writeClassTableEntry(pkgName, className, 1, classAPI.isInterface_, classAPI.doc_, false);
             }
             writeTableEnd();
+            // Now emit a separate file for each added class and interface.
+            for (ClassAPI classApi : pkgDiff.classesAdded) {
+                reportAddedClass(pkgName, classApi);
+            }
         }
 
         // Report classes which were changed in the new API
@@ -428,6 +432,39 @@
         reportFile = oldReportFile;
     }
 
+    /**
+     * Write out a quick redirection file for added classes.
+     */
+    public void reportAddedClass(String pkgName, ClassAPI classApi) {
+        String className = classApi.name_;
+
+        String localReportFileName = reportFileName + JDiff.DIR_SEP + pkgName + "." + className
+                + reportFileExt;
+        if (outputDir != null)
+            localReportFileName = outputDir + JDiff.DIR_SEP + localReportFileName;
+
+        try (PrintWriter pw = new PrintWriter(new FileOutputStream(localReportFileName))) {
+            // Link to HTML file for the class
+            String classRef = pkgName + "." + className;
+            // Deal with inner classes
+            if (className.indexOf('.') != -1) {
+                classRef = pkgName + ".";
+                classRef = classRef.replace('.', '/');
+                classRef = newDocPrefix + classRef + className;
+            } else {
+                classRef = classRef.replace('.', '/');
+                classRef = newDocPrefix + classRef;
+            }
+
+            pw.write("<html><head><meta http-equiv=\"refresh\" content=\"0;URL='" + classRef
+                    + ".html'\" /></head></html>");
+        } catch(IOException e) {
+            System.out.println("IO Error while attempting to create " + localReportFileName);
+            System.out.println("Error: "+ e.getMessage());
+            System.exit(1);
+        }
+    }
+
     /** 
      * Write out the details of a changed class in a separate file. 
      */
diff --git a/src/jdiff/PackageDiff.java b/src/jdiff/PackageDiff.java
index ba94f6e..94606ac 100755
--- a/src/jdiff/PackageDiff.java
+++ b/src/jdiff/PackageDiff.java
@@ -14,11 +14,11 @@
     public String name_;
 
     /** Classes added in the new API. */
-    public List classesAdded = null;
+    public List<ClassAPI> classesAdded = null;
     /** Classes removed in the new API. */
-    public List classesRemoved = null;
+    public List<ClassAPI> classesRemoved = null;
     /** Classes changed in the new API. */
-    public List classesChanged = null;
+    public List<ClassDiff> classesChanged = null;
 
     /** 
      * A string describing the changes in documentation. 
@@ -31,8 +31,8 @@
     /** Default constructor. */
     public PackageDiff(String name) {
         name_ = name;
-        classesAdded = new ArrayList(); // ClassAPI[]
-        classesRemoved = new ArrayList(); // ClassAPI[]
-        classesChanged = new ArrayList(); // ClassDiff[]
+        classesAdded = new ArrayList<>();
+        classesRemoved = new ArrayList<>();
+        classesChanged = new ArrayList<>();
     }   
 }
