diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index e2748c9..1205cba 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -49,13 +49,13 @@
 ---------------
 
 + Make sure you have a [JIRA account](https://issues.apache.org/jira/).
-+ Make sure you have a [GitHub account](https://github.com/signup/free).
++ Make sure you have a [GitHub account](https://github.com/signup/free). This is not essential, but makes providing patches much easier.
 + If you're planning to implement a new feature it makes sense to discuss your changes on the [dev list](https://commons.apache.org/mail-lists.html) first. This way you can make sure you're not wasting your time on something that isn't considered to be in Apache Commons IO's scope.
 + Submit a [Jira Ticket][jira] for your issue, assuming one does not already exist.
   + Clearly describe the issue including steps to reproduce when it is a bug.
   + Make sure you fill in the earliest version that you know has the issue.
 + Find the corresponding [repository on GitHub](https://github.com/apache/?query=commons-),
-[fork](https://help.github.com/articles/fork-a-repo/) and check out your forked repository.
+[fork](https://help.github.com/articles/fork-a-repo/) and check out your forked repository. If you don't have a GitHub account, you can still clone the Commons repository.
 
 Making Changes
 --------------
@@ -109,7 +109,6 @@
 + [General GitHub documentation](https://help.github.com/)
 + [GitHub pull request documentation](https://help.github.com/articles/creating-a-pull-request/)
 + [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)
-+ `#apache-commons` IRC channel on `irc.freenode.net`
 
 [cla]:https://www.apache.org/licenses/#clas
 [jira]:https://issues.apache.org/jira/browse/IO
diff --git a/README.md b/README.md
index ba8367f..3cc19b4 100644
--- a/README.md
+++ b/README.md
@@ -46,7 +46,7 @@
 [![Java CI](https://github.com/apache/commons-io/actions/workflows/maven.yml/badge.svg)](https://github.com/apache/commons-io/actions/workflows/maven.yml)
 [![Coverage Status](https://codecov.io/gh/apache/commons-io/branch/master/graph/badge.svg)](https://app.codecov.io/gh/apache/commons-io)
 [![Maven Central](https://maven-badges.herokuapp.com/maven-central/commons-io/commons-io/badge.svg?gav=true)](https://maven-badges.herokuapp.com/maven-central/commons-io/commons-io/?gav=true)
-[![Javadocs](https://javadoc.io/badge/commons-io/commons-io/2.15.1.svg)](https://javadoc.io/doc/commons-io/commons-io/2.15.1)
+[![Javadocs](https://javadoc.io/badge/commons-io/commons-io/2.16.0.svg)](https://javadoc.io/doc/commons-io/commons-io/2.16.0)
 [![CodeQL](https://github.com/apache/commons-io/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/apache/commons-io/actions/workflows/codeql-analysis.yml)
 [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/apache/commons-io/badge)](https://api.securityscorecards.dev/projects/github.com/apache/commons-io)
 
@@ -70,7 +70,7 @@
 <dependency>
   <groupId>commons-io</groupId>
   <artifactId>commons-io</artifactId>
-  <version>2.15.1</version>
+  <version>2.16.0</version>
 </dependency>
 ```
 
@@ -112,7 +112,6 @@
 + [Apache Issue Tracker (JIRA)](https://issues.apache.org/jira/browse/IO)
 + [Apache Commons Slack Channel](https://the-asf.slack.com/archives/C60NVB8AD)
 + [Apache Commons Twitter Account](https://twitter.com/ApacheCommons)
-+ `#apache-commons` IRC channel on `irc.freenode.org`
 
 Apache Commons Components
 -------------------------
diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index 5effc12..bee4fb0 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -1,4 +1,144 @@
 
+Apache Commons IO 2.16.0 Release Notes
+
+Introduction
+------------
+
+Commons IO is a package of Java utility classes like java.io.  
+Classes in this package are considered to be so standard and of such high 
+reuse as to justify existence in java.io.
+
+The Apache Commons IO library contains utility classes, stream implementations, file filters,
+file comparators, endian transformation classes, and much more.
+
+Java 8 is required.
+
+New features
+------------
+
+o          Add and use PathUtils.getFileName(Path, Function<Path, R>). Thanks to Gary Gregory. 
+o          Add and use PathUtils.getFileNameString(). Thanks to Gary Gregory. 
+o          Make public Erase.rethrow(Throwable). Thanks to Gary Gregory. 
+o IO-826:  Add BrokenInputStream.BrokenInputStream(Throwable). Thanks to markslater, Gary Gregory. 
+o IO-826:  Add BrokenReader.BrokenReader(Throwable). Thanks to markslater, Gary Gregory. 
+o IO-826:  Add BrokenOutputStream.BrokenOutputStream(Throwable). Thanks to markslater, Gary Gregory. 
+o IO-826:  Add BrokenWriter.BrokenWriter(Throwable). Thanks to markslater, Gary Gregory. 
+o          Add BoundedInputStream.getRemaining(). Thanks to Gary Gregory. 
+o          Add FileTimes.toNtfsTime(long). Thanks to Gary Gregory. 
+o          Add FileTimes.fromUnixTime(long). Thanks to Gary Gregory. 
+o          Add FileTimes.isUnixTime(FileTime). Thanks to Gary Gregory. 
+o          Add FileTimes.isUnixTime(long). Thanks to Gary Gregory. 
+o          Add FileTimes.toUnixTime(FileTime). Thanks to Gary Gregory. 
+o          Add BrokenInputStream.Builder. Thanks to Gary Gregory. 
+o          Add PathUtils.getExtension(Path). Thanks to Gary Gregory. 
+o          Add PathUtils.getBaseName(Path). Thanks to Gary Gregory. 
+o          Add ThrottledInputStream. Thanks to Gary Gregory. 
+o          Add IORunnable.noop(). Thanks to Gary Gregory. 
+o          Add ChecksumInputStream and test #548. Thanks to Gary Gregory. 
+o          Add AbstractStreamBuilder.getReader(). Thanks to Gary Gregory. 
+o          Add Maven property project.build.outputTimestamp for build reproducibility. Thanks to Gary Gregory. 
+o          Add ProxyInputStream.unwrap(). Thanks to Gary Gregory. 
+o          Add a running count and builder to BoundedInputStream. Thanks to Gary Gregory. 
+
+Fixed Bugs
+----------
+
+o          Fix and re-enable testSkip_RequiredCharsets #518. Thanks to Elliotte Rusty Harold. 
+o IO-824:  SymbolicLineFileFilter documentation fixes. Thanks to Miguel Munoz, Gary Gregory. 
+o IO-795:  CharSequenceInputStream.reset() only works once #520. Thanks to Miguel Munoz, Gary Gregory. 
+o IO-795:  Finish TODO on CharSequenceInputStream #540. Thanks to Elliotte Rusty Harold. 
+o IO-825:  Add byte array size validation for methods in EndianUtils #521. Thanks to Arthur Chan, Gary Gregory. 
+o IO-825:  Add missing test case CircularByteBufferTest. Thanks to dkdal, Gary Gregory. 
+o IO-781:  Make CharSequenceInputStream.available() more correct in the face of multibyte encodings #525. Thanks to Elliotte Rusty Harold. 
+o IO-781:  Remove unreachable code in AbstractIOFileFilterTest #526. Thanks to Elliotte Rusty Harold. 
+o IO-808:  Rationalize and unify checking for existence of files and directories #529. Thanks to Elliotte Rusty Harold. 
+o          Avoid NullPointerException in IOCase.checkEquals(String, String) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in CanExecuteFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in CanExecuteFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in CanReadFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in CanReadFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in CanWriteFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in CanWriteFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in DirectoryFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in DirectoryFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in EmptyFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in EmptyFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in FileFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in FileFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in HiddenFileFilter.accept(File) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in HiddenFileFilter.accept(Path, BasicFileAttributes) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in IOCase.checkIndexOf(String, int, String) on null input. Thanks to Gary Gregory. 
+o          Avoid NullPointerException in IOCase.checkRegionMatches(String, int, String) on null input. Thanks to Gary Gregory. 
+o          BoundedInputStream.getCount() should not count EOF. Thanks to Gary Gregory. 
+o          Modernize temporary file creation and deletion in DeferredFileOutputStreamTest #535. Thanks to Elliotte Rusty Harold, Gary Gregory. 
+o          Add PathMatcher to IOFileFilter class Javadoc #536. Thanks to Elliotte Rusty Harold. 
+o IO-781:  Fix CharSequenceInputStream coding exception handling #537. Thanks to Marcono1234. 
+o IO-781:  Deprecate int CountingInputStream#getCount() in favor of long CountingInputStream#getByteCount(). Thanks to Marcono1234. 
+o IO-828:  Deprecate CountingInputStream.resetCount() in favor of resetByteCount(). Thanks to Elliotte Rusty Harold, Gary Gregory. 
+o IO-828:  Deprecate CountingInputStream.getMaxLength() in favor of getMaxCount()). Thanks to Gary Gregory. 
+o IO-818:  NullInputStream breaks InputStream's read method contract. Thanks to Gary Gregory. 
+o          Javadoc shouldn't reference 1.x behavior #539. Thanks to Elliotte Rusty Harold. 
+o IO-829:  Don't decode and reencode characters in a potentially different charset in AbstractOrigin.CharSequenceOrigin.getReader(Charset). Thanks to Elliotte Rusty Harold, Gary Gregory. 
+o          Let subclasses of CountingInputStream.afterRead(int) throw IOException. Thanks to Gary Gregory. 
+o IO-807:  Characterization test for broken symlinks when copying directories #547. Thanks to Elliotte Rusty Harold, Gary Gregory. 
+o          ClosedInputStream.read(byte[], int, int) does not always return -1. Thanks to Gary Gregory. 
+o          ClosedOutputStream.write(byte[], int, int) does not always throw IOException. Thanks to Gary Gregory. 
+o          XmlStreamReader can't parse an XML document with a multi-line prolog #550. Thanks to Sylwester Lachiewicz, Gary Gregory. 
+o          XmlStreamReader can't parse XML an document with an external parsed entity prolog. Thanks to Andreas Hubold, Gary Gregory. 
+o IO-836:  Update FileNameUtils Javadoc #554. Thanks to Elliotte Rusty Harold. 
+o IO-807:  Copy symlinks, not the files the symlinks point to #558. Thanks to Jordi Sola, Elliotte Rusty Harold. 
+o          Pickup apache-rat-plugin version from parent POM. Thanks to Gary Gregory. 
+o          Add test for copying a symlink FileUtilsTest#testCopyFile_symLink() #564. Thanks to Elliotte Rusty Harold. 
+o          Make copyFile copy symbolic links by value rather than reference #565. Thanks to Elliotte Rusty Harold. 
+o          Deprecate CopyUtils 0-argument constructor. Thanks to Gary Gregory. 
+o IO-843:  Deprecate EndianUtils 0-argument constructor. Thanks to Gary Gregory, Elliotte Rusty Harold. 
+o          Deprecate FileSystemUtils 0-argument constructor. Thanks to Gary Gregory. 
+o          Deprecate FilenameUtils 0-argument constructor. Thanks to Gary Gregory. 
+o          Deprecate RandomAccessFiles 0-argument constructor. Thanks to Gary Gregory. 
+o          Clarify and correct EndianUtils and SwappedDataInputStream API doc #566. Thanks to Elliotte Rusty Harold, Gary Gregory. 
+o          Add characterization test for copying a symlinked directory #570. Thanks to Elliotte Rusty Harold. 
+o          RandomAccessFileInputStream.builder().get() now throws ISE instead of NPE. Thanks to Gary Gregory. 
+o IO-845:  Test links to targets outside the source directory #571. Thanks to Elliotte Rusty Harold. 
+o          Focus Javadoc on current version rather than past versions #573, #574. Thanks to Elliotte Rusty Harold. 
+o IO-469:  "Self-suppression not permitted" while using BrokenOutput and BrokenInput streams with try-with-resources. Thanks to Grigory Fadeev, Kristian Rosenvold, Elliotte Rusty Harold. 
+o IO-405:  Handle zero and negative thresholds #587. Thanks to Elliotte Rusty Harold. 
+o          Deprecate CountingInputStream in favor of BoundedInputStream. Thanks to Gary Gregory. 
+o          PathUtils.setPosixPermissions(...) only sets permissions if needed. Thanks to Gary Gregory. 
+o          PathUtils.setReadOnly(...) only sets permissions if needed. Thanks to Gary Gregory. 
+o          PathUtils.deleteFile(..., DeleteOption...) only sets permissions if needed. Thanks to Gary Gregory. 
+o          CleaningPathVisitor only sets permissions if needed. Thanks to Gary Gregory. 
+o          DeletingPathVisitor only sets permissions if needed. Thanks to Gary Gregory. 
+
+Changes
+-------
+
+o          Bump commons.bytebuddy.version from 1.14.10 to 1.14.12 #534, #592. Thanks to Gary Gregory. 
+o          Bump org.apache.commons:commons-parent from 65 to 67. Thanks to Gary Gregory. 
+o          Bump commons-codec:commons-codec from 1.16.0 to 1.16.1 #583. Thanks to Dependabot. 
+o          Bump org.codehaus.mojo:exec-maven-plugin from 3.1.1 to 3.2.0 #593. Thanks to Dependabot. 
+
+
+Commons IO 2.7 and up requires Java 8 or above.
+Commons IO 2.6 requires Java 7 or above.
+Commons IO 2.3 through 2.5 requires Java 6 or above.
+Commons IO 2.2 requires Java 5 or above.
+Commons IO 1.4 requires Java 1.3 or above.
+
+Historical list of changes: https://commons.apache.org/proper/commons-io/changes-report.html
+
+For complete information on Apache Commons IO, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons IO website:
+
+https://commons.apache.org/proper/commons-io/
+
+Download page: https://commons.apache.org/proper/commons-io/download_io.cgi
+
+Have fun!
+-Apache Commons Team
+
+------------------------------------------------------------------------------
+
+
 Apache Commons IO 
 Version 2.15.1
 Release Notes
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 91700dd..b72a82b 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -46,7 +46,7 @@
     <title>Apache Commons IO Release Notes</title>
   </properties>
   <body>
-    <release version="2.16.0" date="202Y-MM-DD" description="Java 8 is required.">
+    <release version="2.16.0" date="2024-03-25" description="Java 8 is required.">
       <!-- Fix -->
       <action dev="ggregory" type="fix" due-to="Elliotte Rusty Harold">Fix and re-enable testSkip_RequiredCharsets #518.</action>
       <action dev="ggregory" type="fix" issue="IO-824" due-to="Miguel Munoz, Gary Gregory">SymbolicLineFileFilter documentation fixes.</action>
diff --git a/src/changes/release-notes.vm b/src/changes/release-notes.vm
index 6c02743..66b4137 100644
--- a/src/changes/release-notes.vm
+++ b/src/changes/release-notes.vm
@@ -15,11 +15,10 @@
 ## specific language governing permissions and limitations
 ## under the License.
 
-Apache Commons IO 
-Version ${version}
-Release Notes
+Apache Commons IO ${version} Release Notes
 
-INTRODUCTION:
+Introduction
+------------
 
 Commons IO is a package of Java utility classes like java.io.  
 Classes in this package are considered to be so standard and of such high 
@@ -40,14 +39,14 @@
 #if ($release.getActions().size() == 0)
 No changes defined in this version.
 #else
-Changes in this version include:
-
 ## indent to be used if there is no issue attribute.
 ## should be the same as the indent in the changes.xml file
-## less 2 spaces for the 'o' and trailing space
-#set($indent='          ')
+## less 2 spaces for the '*' and trailing space
+#set($indent='         ')
 #if ($release.getActions('add').size() !=0)
-New features:
+New features
+------------
+
 #foreach($actionItem in $release.getActions('add'))
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
@@ -70,7 +69,9 @@
 #end
 
 #if ($release.getActions('fix').size() !=0)
-Fixed Bugs:
+Fixed Bugs
+----------
+
 #foreach($actionItem in $release.getActions('fix'))
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
@@ -93,7 +94,9 @@
 #end
 
 #if ($release.getActions('update').size() !=0)
-Changes:
+Changes
+-------
+
 #foreach($actionItem in $release.getActions('update'))
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
@@ -116,7 +119,9 @@
 #end
 
 #if ($release.getActions('remove').size() !=0)
-Removed:
+Removed
+-------
+
 #foreach($actionItem in $release.getActions('remove'))
 ## Use replaceAll to fix up LF-only line ends on Windows.
 #set($action=$actionItem.getAction().replaceAll("\n","
@@ -140,10 +145,6 @@
 ## End of main loop
 #end
 ##
-Compatibility with 2.6:
-Binary compatible: Yes.
-Source compatible: Yes.
-Semantic compatible: Yes.
 
 Commons IO 2.7 and up requires Java 8 or above.
 Commons IO 2.6 requires Java 7 or above.
@@ -163,4 +164,5 @@
 Have fun!
 -Apache Commons Team
 
-==============================================================================
+------------------------------------------------------------------------------
+
diff --git a/src/site/xdoc/download_io.xml b/src/site/xdoc/download_io.xml
index 4d370c2..dc8309f 100644
--- a/src/site/xdoc/download_io.xml
+++ b/src/site/xdoc/download_io.xml
@@ -113,32 +113,32 @@
       </p>
     </subsection>
     </section>
-    <section name="Apache Commons IO 2.15.1 (requires Java 8)">
+    <section name="Apache Commons IO 2.16.0 (requires Java 8)">
       <subsection name="Binaries">
         <table>
           <tr>
-              <td><a href="[preferred]/commons/io/binaries/commons-io-2.15.1-bin.tar.gz">commons-io-2.15.1-bin.tar.gz</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.15.1-bin.tar.gz.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.15.1-bin.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/io/binaries/commons-io-2.16.0-bin.tar.gz">commons-io-2.16.0-bin.tar.gz</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.16.0-bin.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.16.0-bin.tar.gz.asc">pgp</a></td>
           </tr>
           <tr>
-              <td><a href="[preferred]/commons/io/binaries/commons-io-2.15.1-bin.zip">commons-io-2.15.1-bin.zip</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.15.1-bin.zip.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.15.1-bin.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/io/binaries/commons-io-2.16.0-bin.zip">commons-io-2.16.0-bin.zip</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.16.0-bin.zip.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/binaries/commons-io-2.16.0-bin.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>
       <subsection name="Source">
         <table>
           <tr>
-              <td><a href="[preferred]/commons/io/source/commons-io-2.15.1-src.tar.gz">commons-io-2.15.1-src.tar.gz</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.15.1-src.tar.gz.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.15.1-src.tar.gz.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/io/source/commons-io-2.16.0-src.tar.gz">commons-io-2.16.0-src.tar.gz</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.16.0-src.tar.gz.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.16.0-src.tar.gz.asc">pgp</a></td>
           </tr>
           <tr>
-              <td><a href="[preferred]/commons/io/source/commons-io-2.15.1-src.zip">commons-io-2.15.1-src.zip</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.15.1-src.zip.sha512">sha512</a></td>
-              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.15.1-src.zip.asc">pgp</a></td>
+              <td><a href="[preferred]/commons/io/source/commons-io-2.16.0-src.zip">commons-io-2.16.0-src.zip</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.16.0-src.zip.sha512">sha512</a></td>
+              <td><a href="https://downloads.apache.org/commons/io/source/commons-io-2.16.0-src.zip.asc">pgp</a></td>
           </tr>
         </table>
       </subsection>
