diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 3bb7b2f..112f13e 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -7,6 +7,22 @@
 
 New features and bug fix release.
 
+Please note that the Clirr report shows several errors.
+These may affect source compatibility.
+However they should not affect binary compatibility, as explained below.
+
+FileContent, FileName, FileObject, FileSystemManager, RandomAccessContent:
+The above interfaces have been updated to add new methods.
+This does not affect binary compatibility; for details please see:
+https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.3-100
+The above changes may affect source compatibility.
+ Changes to method parameters and return types in TarFileObject and TarFileSystem
+The original parameter/return types were the following:
+org.apache.commons.vfs2.provider.tar.TarEntry
+org.apache.commons.vfs2.provider.tar.TarInputStream
+The above were package protected, so any methods using them did not form part of the public API.
+Therefore source and binary compatibility is not affected.
+
 Changes in this version include:
 
 New features:
@@ -120,6 +136,8 @@
 o VFS-364:  Check the href in the response for just a path in addition to a full uri.
 
 Changes:
+o VFS-607:  Update Apache Commons Compress from 1.10 to 1.11.
+o VFS-608:  Update Apache Commons Net from 3.4 to 3.5.
 o VFS-530:  [hdfs] Use stable Apache Hadoop 2.6 dependencies. Thanks to Dave Marion.
 o VFS-601:  Update Apache Commons Net from 3.3 to 3.4.
 o VFS-602:  Update Apache Commons IO from 2.4 to 2.5.
@@ -190,11 +208,6 @@
 Removed:
 o VFS-469:  Remove unused dependency to javax.jcr:jcr.
 
-Please note that release 2.1 is not completely binary compatible with the previous 2.0 release. This
-is primarily due to the upgrade of Apache Commons Compress to 1.6 and is limited to the TarFileProvider
-and related classes. All other errors reported in the Clirr report should be binary compatible as
-they consist of method additions.
-
 Historical list of changes: http://commons.apache.org/proper/commons-vfs/changes-report.html
 
 For complete information on Apache Commons VFS, including instructions on how to submit bug reports,
diff --git a/core/pom.xml b/core/pom.xml
index a1c1cf5..d42e497 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -141,6 +141,16 @@
       <artifactId>hadoop-common</artifactId>
       <type>test-jar</type>
       <scope>test</scope>
+      <exclusions>
+        <exclusion>
+         <!-- VFS-606 - tools.jar not available in Java 9
+              This exclusion can be removed after upgrading Hadoop
+              to 2.7.1 or later  
+          -->
+          <groupId>jdk.tools</groupId>
+          <artifactId>jdk.tools</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.apache.hadoop</groupId>
diff --git a/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java b/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
index 7d8d0f6..83a4e3c 100644
--- a/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
+++ b/core/src/main/java/org/apache/commons/vfs2/provider/tar/TarFileObject.java
@@ -51,8 +51,10 @@
 
     /**
      * Sets the details for this file object.
+     * 
+     * Consider this method package private. TODO Might be made package private in the next major version. 
      */
-    void setTarEntry(final TarArchiveEntry entry)
+    protected void setTarEntry(final TarArchiveEntry entry)
     {
         if (this.entry != null)
         {
diff --git a/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java b/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
index df288b3..8408443 100644
--- a/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
+++ b/core/src/main/java/org/apache/commons/vfs2/provider/webdav/WebdavFileProvider.java
@@ -41,6 +41,18 @@
 public class WebdavFileProvider
     extends HttpFileProvider
 {
+    
+    /**
+     * The authenticator types used by the WebDAV provider.
+     * 
+     * @deprecated Might be removed in the next major version.
+     */
+    @Deprecated
+    public static final UserAuthenticationData.Type[] AUTHENTICATOR_TYPES = new UserAuthenticationData.Type[]
+        {
+            UserAuthenticationData.USERNAME, UserAuthenticationData.PASSWORD
+        };
+   
     /** The capabilities of the WebDAV provider */
     protected static final Collection<Capability> capabilities =
             Collections.unmodifiableCollection(Arrays.asList(new Capability[]
diff --git a/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java b/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java
index 7e86952..38f5372 100644
--- a/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java
+++ b/core/src/test/java/org/apache/commons/vfs2/provider/http/test/GetContentInfoFunctionalTest.java
@@ -39,10 +39,10 @@
      *             thrown when the getContentInfo API fails.
      */
     @Test
-    public void testGoogle() throws FileSystemException
+    public void testGetContentInfo() throws FileSystemException
     {
         final FileSystemManager fsManager = VFS.getManager();
-        final FileObject fo = fsManager.resolveFile("http://www.google.com/images/logos/ps_logo2.png");
+        final FileObject fo = fsManager.resolveFile("http://www.apache.org/licenses/LICENSE-2.0.txt");
         final FileContent content = fo.getContent();
         Assert.assertNotNull(content);
         // Used to NPE before fix:
diff --git a/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java b/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java
index 5ef3fe8..6d28e1b 100644
--- a/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java
+++ b/core/src/test/java/org/apache/commons/vfs2/provider/https/test/GetContentInfoFunctionalTest.java
@@ -46,7 +46,7 @@
      *             thrown when the System environment contains an invalid URL for an HTTPS proxy.
      */
     @Test
-    public void testGoogle() throws FileSystemException, MalformedURLException
+    public void testGetContentInfo() throws FileSystemException, MalformedURLException
     {
         String httpsProxyHost = null;
         int httpsProxyPort = -1;
@@ -69,7 +69,7 @@
         }
 
         final FileSystemManager fsManager = VFS.getManager();
-        final FileObject fo = fsManager.resolveFile("https://www.google.com/images/logos/ps_logo2.png", opts);
+        final FileObject fo = fsManager.resolveFile("http://www.apache.org/licenses/LICENSE-2.0.txt", opts);
         final FileContent content = fo.getContent();
         Assert.assertNotNull(content);
         // Used to NPE before fix:
diff --git a/pom.xml b/pom.xml
index a8dcf1e..ceac4ad 100644
--- a/pom.xml
+++ b/pom.xml
@@ -168,6 +168,7 @@
     <commons.clirr.version>2.6</commons.clirr.version>
     <!-- Avoid warnings about being unable to find jars during site buildling -->
     <dependency.locations.enabled>false</dependency.locations.enabled>
+    <hadoop.version>2.6.0</hadoop.version>
   </properties>
 
   <build>
@@ -369,7 +370,7 @@
       <dependency>
         <groupId>commons-net</groupId>
         <artifactId>commons-net</artifactId>
-        <version>3.4</version>
+        <version>3.5</version>
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
@@ -384,7 +385,7 @@
       <dependency>
         <groupId>org.apache.commons</groupId>
         <artifactId>commons-compress</artifactId>
-        <version>1.10</version>
+        <version>1.11</version>
       </dependency>
       <dependency>
         <groupId>org.apache.jackrabbit</groupId>
@@ -414,7 +415,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-common</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <exclusions>
           <exclusion>
             <groupId>*</groupId>
@@ -425,7 +426,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdfs</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <exclusions>
           <exclusion>
             <groupId>*</groupId>
@@ -505,7 +506,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-common</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <type>test-jar</type>
         <exclusions>
           <exclusion>
@@ -518,7 +519,7 @@
       <dependency>
         <groupId>org.apache.hadoop</groupId>
         <artifactId>hadoop-hdfs</artifactId>
-        <version>2.6.0</version>
+        <version>${hadoop.version}</version>
         <type>test-jar</type>
       </dependency>
       <dependency>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5ce19a1..fbbd8f7 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -45,10 +45,51 @@
   </properties>
 
   <body>
-    <release version="2.1" date="TBD" description="New features and bug fix release.">
+    <release version="2.1" date="TBD" description="New features and bug fix release.
+
+
+
+Please note that the Clirr report shows several errors.
+
+These may affect source compatibility.
+
+However they should not affect binary compatibility, as explained below.
+
+
+
+FileContent, FileName, FileObject, FileSystemManager, RandomAccessContent:
+
+The above interfaces have been updated to add new methods.
+
+This does not affect binary compatibility; for details please see:
+
+https://docs.oracle.com/javase/specs/jls/se7/html/jls-13.html#jls-13.5.3-100
+
+The above changes may affect source compatibility.
+
+
+Changes to method parameters and return types in TarFileObject and TarFileSystem
+
+The original parameter/return types were the following:
+
+org.apache.commons.vfs2.provider.tar.TarEntry
+
+org.apache.commons.vfs2.provider.tar.TarInputStream
+
+The above were package protected, so any methods using them did not form part of the public API.
+
+Therefore source and binary compatibility is not affected.">
 <!--       <action issue="VFS-443" dev="ggregory" type="update" due-to="nickallen"> -->
 <!--        [Local] Need an easy way to convert from a FileObject to a File. -->
 <!--       </action> -->
+<!-- START Might need to be moved to the next version -->
+     <action issue="VFS-607" dev="ggregory" type="update">
+        Update Apache Commons Compress from 1.10 to 1.11.
+     </action>
+     <action issue="VFS-608" dev="ggregory" type="update">
+        Update Apache Commons Net from 3.4 to 3.5.
+     </action>
+<!-- END Might need to be moved to the next version -->
      <action issue="VFS-424" dev="ecki" type="fix">
         Fix StandardFileSystemManager class loading so it works in a OSGi environment.
      </action>
