diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 5a10783..109d740 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -45,6 +45,7 @@
   </properties>
   <body>
   <release version="1.9.1" date="202Y-MM-DD" description="Release 1.9.1. Requires Java 8.">
+    <action issue="TEXT-185" type="add" dev="ggregory" due-to="Larry West, Gary Gregory">Release Notes page hasn't been updated for 1.9 release yet.</action>    
     <action                  type="add" dev="ggregory" due-to="Gary Gregory">Update spotbugs.plugin.version 4.0.0 to 4.0.4.</action>    
   </release>
   <release version="1.9" date="2020-07-21" description="Release 1.9. Requires Java 8.">
diff --git a/src/site/resources/RELEASE-NOTES.txt b/src/site/resources/RELEASE-NOTES.txt
deleted file mode 100644
index 9f24bf8..0000000
--- a/src/site/resources/RELEASE-NOTES.txt
+++ /dev/null
@@ -1,447 +0,0 @@
-Apache Commons Text
-Version 1.8
-Release Notes
-
-
-INTRODUCTION:
-
-This document contains the release notes for the 1.8 version of Apache Commons Text.
-Commons Text is a set of utility functions and reusable components for the purpose of processing
-and manipulating text that should be of use in a Java environment.
-
-
-Apache Commons Text is a library focused on algorithms working on strings.
-
-Release 1.8
-
-Changes in this version include:
-
-- New Features
-  o TEXT-169: Add helper factory method org.apache.commons.text.StringSubstitutor.createInterpolator(). Thanks to Gary Gregory.
-  o TEXT-170: Add String lookup for host names and IP addresses (DnsStringLookup). Thanks to Gary Gregory.
-    
-- Fixed Bugs
-  o TEXT-167: commons-text web page missing "RELEASE-NOTES-1.7.txt". Thanks to Larry West.
-  o TEXT-168: (doc) Fixed wrong value for Jaro-Winkler example #117. Thanks to luksan47.
-  o TEXT-171: StringLookupFactory.addDefaultStringLookups(Map) does not convert keys to lower case. Thanks to Gary Gregory.
-    
-- Changes
-  o Expand Javadoc for StringSubstitutor and friends. Thanks to Gary Gregory.
-  o [site] checkstyle.version 8.21 -> 8.23. Thanks to Gary Gregory.
-    
-
-Historical list of changes: https://commons.apache.org/proper/commons-textchanges-report.html
-
-For complete information on Apache Commons Text, including instructions on how to submit bug reports,
-patches, or suggestions for improvement, see the Apache Apache Commons Text website:
-
-https://commons.apache.org/proper/commons-text
-
-Download it from https://commons.apache.org/proper/commons-text/download_text.cgi
-
-
-=============================================================================
-
-Apache Commons Text
-Version 1.7
-Release Notes
-
-INTRODUCTION:
-
-This document contains the release notes for the 1.7 version of Apache Commons Text.
-Commons Text is a set of utility functions and reusable components for the purpose of processing
-and manipulating text that should be of use in a Java environment.
-
-Apache Commons Text is a library focused on algorithms working on strings.
-
-Changes in this version include:
-
-New features:
-
-o TEXT-148:  Add an enum to the lookup package that lists all StringLookups
-o TEXT-127:  Add a toggle to throw an exception when a variable is unknown in StringSubstitutor Thanks to Jean-Baptiste REICH, Sebb, Don Jeba, Gary Gregory.
-o TEXT-138:  TextStringBuilder append sub-sequence not consistent with Appendable. Thanks to Neal Johnson, Don Jeba.
-o TEXT-152:  Fix possible infinite loop in WordUtils.wrap for a regex pattern that would trigger on a match of 0 length Thanks to @CAPS50.
-o TEXT-155:  Add a generic IntersectionSimilarity measure
-
-Fixed Bugs:
-
-o TEXT-111:  WordUtils.wrap must calculate offset increment from wrapOn pattern length Thanks to @CAPS50.
-o TEXT-151:  Fix the JaroWinklerSimilarity to use StringUtils.equals to test for CharSequence equality
-o TEXT-165:  ResourceBundleStringLookup.lookup(String) throws MissingResourceException instead of returning null.
-
-Changes:
-
-o TEXT-104:  Jaro Winkler Distance refers to similarity Thanks to Sascha Szott.
-o TEXT-153:  Make prefixSet in LookupTranslator a BitSet Thanks to amirhadadi.
-o TEXT-156:  Fix the RegexTokenizer to use a static Pattern
-o TEXT-157:  Remove rounding from JaccardDistance and JaccardSimilarity
-o TEXT-162:  Update Apache Commons Lang from 3.8.1 to 3.9.
-o            Update tests from org.assertj:assertj-core 3.12.1 to 3.12.2.
-o            Update site from com.puppycrawl.tools:checkstyle 8.18 to 8.21.
-
-Historical list of changes: https://commons.apache.org/proper/commons-text/changes-report.html
-
-For complete information on Apache Commons Text, including instructions on how to submit bug reports,
-patches, or suggestions for improvement, see the Apache Apache Commons Text website:
-
-https://commons.apache.org/proper/commons-text
-
-Download it from https://commons.apache.org/proper/commons-text/download_text.cgi
-
-
-=============================================================================
-
-                          Apache Commons Text
-                              Version 1.6
-                             Release Notes
-
-INTRODUCTION
-============
-
-This document contains the release notes for the 1.6 version of Apache Commons
-Text. Commons Text is a set of utility functions and reusable components for
-the purpose of processing and manipulating text that should be of use in a Java
-environment.
-
-This component requires Java 8.
-
-CHANGES
-=======
-
-o TEXT-144:  Add the resource string bundle string lookup to the default set of lookups
-o TEXT-145:  Add StringLookupFactory methods for the URL encoder and decoder string lookups
-o TEXT-146:  org.apache.commons.text.lookup.StringLookupFactory.interpolatorStringLookup() should reuse a singleton instance
-o TEXT-147:  Add a Base64 encoder string lookup.
-
-Historical list of changes: https://commons.apache.org/proper/commons-text/changes-report.html
-
-For complete information on Apache Commons Text, including instructions on how to submit bug reports,
-patches, or suggestions for improvement, see the Apache Apache Commons Text website:
-
-https://commons.apache.org/proper/commons-text
-
-=============================================================================
-
-                          Apache Commons Text
-                              Version 1.5
-                             Release Notes
-
-INTRODUCTION
-============
-
-This document contains the release notes for the 1.5 version of Apache Commons
-Text. Commons Text is a set of utility functions and reusable components for 
-the purpose of processing and manipulating text that should be of use in a Java
-environment.
-
-This component requires Java 8.
-
-NEW FEATURES
-============
-
-o TEXT-133:  Add a XML file XPath string lookup.
-o TEXT-134:  Add a Properties file string lookup.
-o TEXT-135:  Add a script string lookup.
-o TEXT-136:  Add a file string lookup.
-o TEXT-137:  Add a URL string lookup.
-o TEXT-140:  Add a Base64 string lookup.
-o TEXT-141:  Add org.apache.commons.text.lookup.StringLookupFactory.resourceBundleStringLookup(String).
-o TEXT-142:  Add URL encoder and decoder string lookups.
-o TEXT-143:  Add constant string lookup like the one in Apache Commons Configuration.
-
-FIXED BUGS
-==========
-
-o TEXT-139:  Improve JaccardSimilarity computational cost Thanks to Nick Wong.
-o TEXT-118:  JSON escaping incorrect for the delete control character Thanks to Nandor Kollar.
-o TEXT-130:  Fixes JaroWinklerDistance: Wrong results due to precision of transpositions Thanks to Jan Martin Keil.
-o TEXT-131:  JaroWinklerDistance: Calculation deviates from definition Thanks to Jan Martin Keil.
-
-CHANGES
-=======
-
-o TEXT-132:  Update Apache Commons Lang from 3.7 to 3.8.1
-
-=============================================================================
-
-                          Apache Commons Text
-                              Version 1.4
-                             Release Notes
-
-INTRODUCTION
-============
-
-This document contains the release notes for the 1.4 version of Apache Commons
-Text. Commons Text is a set of utility functions and reusable components for 
-the purpose of processing and manipulating text that should be of use in a Java
-environment.
-
-This component requires Java 8.
-
-
-Changes in this version include:
-    
-Fixed Bugs:
-o TEXT-120:  StringEscapeUtils#unescapeJson does not unescape double quotes and forward slash.
-o TEXT-119:  Remove mention of SQL escaping from user guide.
-o TEXT-123:  WordUtils.wrap throws StringIndexOutOfBoundsException when wrapLength is Integer.MAX_VALUE. Thanks to Takanobu Asanuma.
-                
-Changes:
-o TEXT-121:  Update Java requirement from version 7 to 8. Thanks to pschumacher.
-o TEXT-122:  Allow full customization with new API org.apache.commons.text.lookup.StringLookupFactory.interpolatorStringLookup(Map<String, StringLookup>, StringLookup, boolean).
-
-=============================================================================
-
-                          Apache Commons Text
-                              Version 1.3
-                             Release Notes
-
-INTRODUCTION
-============
-
-This document contains the release notes for the 1.3 version of Apache Commons
-Text. Commons Text is a set of utility functions and reusable components for 
-the purpose of processing and manipulating text that should be of use in a Java
-environment.
-
-This component requires Java 7.
-
-NEW FEATURES
-=============
-
-o Add Automatic-Module-Name MANIFEST entry for Java 9 compatibility  Issue: TEXT-110. 
-o Add an interpolator string lookup: StringLookupFactory#interpolatorStringLookup()  Issue: TEXT-113. 
-o Add a StrSubstitutor replacement based on interfaces: StringSubstitutor  Issue: TEXT-114. 
-o Add a StrBuilder replacement based on the StringMatcher interface: TextStringBuilder  Issue: TEXT-115. 
-o Add a StrTokenizer replacement based on the StringMatcher interface: StringTokenizer  Issue: TEXT-116. 
-o Add a local host string lookup: LocalHostStringLookup  Issue: TEXT-117. 
-
-FIXED BUGS
-==========
-
-o Build failure with java 9-ea+159  Issue: TEXT-70. 
-o StrLookup API confusing  Issue: TEXT-80. 
-
-=============================================================================
-
-                          Apache Commons Text
-                              Version 1.2
-                             Release Notes
-
-INTRODUCTION
-============
-
-This document contains the release notes for the 1.2 version of Apache Commons
-Text. Commons Text is a set of utility functions and reusable components for 
-the purpose of processing and manipulating text that should be of use in a Java
-environment.
-
-This component requires Java 7.
-
-JAVA 9 SUPPORT
-==============
-
-At our time of release of 1.1, our build succeeds with Java 9-ea build 159,
-and we believe all of our features to be Java 9 compatible. However, when we
-run "mvn clean site" we have failures.
-
-NEW FEATURES
-=============
-
-o TEXT-74:   StrSubstitutor: Ability to turn off substitution in values. Thanks to Ioannis Sermetziadis.
-o TEXT-97:   RandomStringGenerator able to pass multiple ranges to .withinRange(). Thanks to Amey Jadiye.
-o TEXT-89:   WordUtils.initials support for UTF-16 surrogate pairs. Thanks to Arun Vinud S S.
-o TEXT-90:   Add CharacterPredicates for ASCII letters (uppercase/lowercase) and arabic numerals.
-o TEXT-85:   Added CaseUtils class with camel case conversion support. Thanks to Arun Vinud S S.
-o TEXT-91:   RandomStringGenerator should be able to generate a String with a random length.
-o TEXT-102:  Add StrLookup.resourceBundleLookup(ResourceBundle).
-
-FIXED BUGS
-==========
-
-o TEXT-106:  Exception thrown in ExtendedMessageFormat using quotes with custom registry. Thanks to Benoit Moreau.
-o TEXT-100:  StringEscapeUtils#UnEscapeJson doesn't recognize escape signs correctly. Thanks to Don Jeba.
-o TEXT-105:  Typo in LongestCommonSubsequence#logestCommonSubsequence. Thanks to Abrasha.
-
-CHANGES
-=======
-
-o TEXT-107:  Upversion commons-lang to 3.7.
-o TEXT-98:   Deprecate isDelimiter and use HashSets for delimiter checks. Thanks to Arun Vinud S S.
-o TEXT-88:   WordUtils should treat an empty delimiter array as no delimiters. Thanks to Amey Jadiye.
-o TEXT-93:   Update RandomStringGenerator to accept a list of valid characters. Thanks to Amey Jadiye.
-o TEXT-92:   Update commons-lang dependency to version 3.6.
-o TEXT-83:   Document that commons-csv should be used in preference to CsvTranslators. Thanks to Amey Jadiye.
-o TEXT-67:   NumericEntityUnescaper.options - fix TODO.
-o TEXT-84:   RandomStringGenerator claims to be immutable, but isn't.
-
-=============================================================================
-
-                        Release Notes for version 1.1
-
-JAVA 9 SUPPORT
-==============
-
-At our time of release of 1.1, our build succeeds with Java 9-ea build 159,
-and we believe all of our features to be Java 9 compatible. However, when we 
-run "mvn clean site" we have failures.
-
-NEW FEATURES
-============
-
-o TEXT-41:   WordUtils.abbreviate support Thanks to Amey Jadiye.
-o TEXT-82:   Putting WordUtils back in to the codebase Thanks to Amey Jadiye.
-o TEXT-81:   Add RandomStringGenerator Thanks to djones.
-o TEXT-36:   RandomStringGenerator: allow users to provide source of randomness
-             Thanks to Raymond DeCampo.
-                
-FIXED BUGS
-==========
-
-o TEXT-76:   Correct round issue in Jaro Winkler implementation
-o TEXT-72:   Similar to LANG-1025, clirr fails site build.
-                
-CHANGES
-=======
-
-o TEXT-39:   WordUtils should use toXxxxCase(int) rather than toXxxxCase(char) 
-             Thanks to Amey Jadiye.
-
-=============================================================================
-
-                        Release Notes for version 1.0
-
-INCOMPATIBLE CHANGES
-====================
-
-All package names changed from org.apache.commons.text.beta in 1.0-beta-1 to
-org.apache.commons.text in 1.0.
-
-Methods StringEscapeUtils#escapeHtml3Once and StringEscapeUtils#escapeHtml4Once
-have been removed; see TEXT-40
-
-JAVA 9 SUPPORT
-==============
-
-At our time of release of 1.0, our build succeeds with Java 9-ea build 158,
-and we believe all of our features to be Java 9 compatible. However, when we run
-"mvn clean site" we have failures.
-
-FIXED BUGS
-==========
-
-o TEXT-64:   Investigate locale issue in ExtendedMessageFormatTest. Thanks to
-             chtompki.
-o TEXT-69:   Resolve PMD/CMD Violations
-o TEXT-65:   Fixing the 200 checkstyle errors present in 1.0-beta-1.
-o TEXT-63:   Mutable fields should be private.
-
-REMOVED
-=======
-
-o TEXT-40:   Escape HTML characters only once: revert.
-
-=============================================================================
-
-                        Release Notes for version 1.0-beta-1
-
-
-A NOTE ON THE HISTORY OF THE CODE
-=================================
-
-The codebase began in the fall of 2014 as a location for housing algorithms for
-operating on Strings that seemed to have a more complex nature than those which
-would be considered a needed extension to java.lang. Thus, a new component,
-different from Apache Commons Lang was warranted. As the project evolved, it was
-noticed that Commons Lang had considerable more text manipulation tools than
-the average Java application developer would need or even want. So, we have
-decided to move the more esoteric String processing algorithms out of Commons
-Lang into Commons Text.
-
-JAVA 9 SUPPORT
-==============
-
-At our time of release of 1.0-beta-1, our build succeeds with Java 9-ea build 153,
-and we believe all of our features to be Java 9 compatible.
-
-NEW FEATURES
-============
-
-o TEXT-56:   Move CvsTranslators out of StringEscapeUtils and make them DRY
-             Thanks to Jarek Strzeleck.
-o TEXT-40:   Escape HTML characters only once Thanks to Sampanna Kahu.
-o TEXT-32:   Add LCS similarity and distance
-o TEXT-34:   Add class to generate random strings
-o TEXT-29:   Add a builder to StringEscapeUtils
-o TEXT-28:   Add shell/XSI escape/unescape support
-o TEXT-2:    Add Jaccard Index and Jaccard Distance Thanks to Don Jeba.
-o TEXT-27:   Move org.apache.commons.lang3.StringEscapeUtils.java into text
-o TEXT-23:   Moving from commons-lang, the package org.apache.commons.lang3.text
-o TEXT-10:   A more complex Levenshtein distance Thanks to Don Jeba.
-o TEXT-24:   Add coveralls and Travis.ci integration
-o TEXT-19:   Add alphabet converter Thanks to Eyal Allweil.
-o TEXT-13:   Create Commons Text logo
-o TEXT-7:    Write user guide
-o TEXT-15:   Human name parser
-o TEXT-3:    Add Cosine Similarity and Cosine Distance
-o TEXT-4:    Port Myers algorithm from [collections]
-o TEXT-1:    Add Hamming distance
-o TEXT-9:    Incorporate String algorithms from Commons Lang Thanks to britter.
-
-FIXED BUGS
-==========
-
-Note. We recognize the curiosity of a new component having "fixed bugs," but a
-considerable number of files were migrated over from Commons Lang, some of which
-needed fixes.
-
-o TEXT-62:   Incorporate suggestions from RC2 into 1.0 release.
-o TEXT-60:   Upgrading Jacoco for Java 9-ea compatibility. Thanks to Lee Adcock.
-o TEXT-52:   Possible attacks through StringEscapeUtils.escapeEcmaScrip better
-             javadoc
-o TEXT-37:   Global vs local source of randomness
-o TEXT-38:   Fluent API in "RandomStringBuilder"
-o TEXT-26:   Fix JaroWinklerDistance in the manner of LUCENE-1297
-o TEXT-35:   Unfinished class Javadoc for CosineDistance
-o TEXT-22:   LevenshteinDistance reduce memory consumption
-o TEXT-5:    IP clearance for the names package
-o TEXT-11:   Work on the string metric, distance, and similarity definitions for
-             the project
-o TEXT-12:   Create StringDistanceFrom class that contains a StringMetric and
-             the "left" side string. This would have a method that accepts the
-             "right" side string to test. Thanks to Jonathan baker.
-o TEXT-8:    Change (R) StringMetric.compare(CS left, CS right) to "apply" so
-             that it is consistent with BiFunction. Thanks to Jonathan Baker.
-o TEXT-6:    Allow extra information (e.g. Levenshtein threshold) to be stored
-             as (final) fields in the StringMetric instance. Thanks to Jonathan
-             Baker.
-
-CHANGES
-=======
-
-o TEXT-61:   Naming packages org.apache.commons.text.beta Thanks to Lee Adcock.
-o TEXT-58:   Refactor EntityArrays to have unmodifiableMaps in leu of String[][]
-o TEXT-53:   Prepare site for 1.0 release
-o TEXT-50:   Upgrade from commons-parent version 41 to version 42
-o TEXT-33:   Consolidating since tags at 1.0, removing deprecated methods
-o TEXT-16:   Improve HumanNameParser
-
-REMOVED
-=======
-
-o TEXT-55:   Remove WordUtils to be added back in an upcoming 1.X release
-o TEXT-51:   Remove RandomStringGenerator to be added back in the 1.1 release
-o TEXT-31:   Remove org.apache.commons.text.names, for later release than 1.0
-
-
-Historical list of changes: https://commons.apache.org/text/changes-report.html
-
-For complete information on Apache Commons Text, including instructions on how
-to submit bug reports, patches, or suggestions for improvement, see the Apache
-Apache Commons Text website:
-
-https://commons.apache.org/text/
-
-Have fun!
--Apache Commons Text team
\ No newline at end of file
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index 0679497..20c61d5 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -42,11 +42,8 @@
 </section>
 <!-- ================================================== -->
 <section name="Release Information">
-<p>The latest stable release of Text is 1.9. You may: </p>
-<ul>
-<li>Download the <a href="https://commons.apache.org/proper/commons-text/download_text.cgi">current version</a></li>
-<li>Read the <a href="RELEASE-NOTES.txt">release notes</a></li>
-</ul>
+<p>The latest stable release of Text is 1.9.</p>
+<p>Download it from <a href="https://commons.apache.org/proper/commons-text/download_text.cgi">here</a>.</p>
 <p>
 Alternatively you can pull it from the central Maven repositories:
 <pre>
