diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt
index e69de29..8c5360c 100644
--- a/RELEASE-NOTES.txt
+++ b/RELEASE-NOTES.txt
@@ -0,0 +1,19 @@
+
+              Apache Commons Rng 1.0 RELEASE NOTES
+
+The Apache Commons Rng team is pleased to announce the release of commons-rng-1.0
+
+The Apache Commons Rng project provides implementations of random numbers generators.
+
+This is the first release of Commons Rng.
+The minimum version of the Java platform required to compile and use
+Commons Rng 1.0 is Java 6.
+
+No changes defined in this version.
+
+For complete information on Apache Commons Rng, including instructions on how to submit bug reports,
+patches, or suggestions for improvement, see the Apache Commons Rng website:
+
+http://commons.apache.org/proper/commons-rng/
+
+
diff --git a/pom.xml b/pom.xml
index 614a48b..433b229 100644
--- a/pom.xml
+++ b/pom.xml
@@ -27,7 +27,7 @@
   <groupId>org.apache.commons</groupId>
   <artifactId>commons-rng</artifactId>
   <packaging>jar</packaging>
-  <version>1.0-SNAPSHOT</version>
+  <version>1.0</version>
   <name>Apache Commons Rng</name>
 
   <inceptionYear>2016</inceptionYear>
@@ -104,7 +104,7 @@
     <!-- do not use snapshot suffix here -->
     <commons.release.version>1.0</commons.release.version>
     <commons.release.desc>(requires Java 1.6+)</commons.release.desc>
-    <!-- <commons.rc.version>RC1</commons.rc.version> -->
+    <commons.rc.version>RC1</commons.rc.version>
     <commons.binary.suffix>-bin</commons.binary.suffix>
 
     <commons.jira.id>RNG</commons.jira.id>
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index c089f2d..e14ae86 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -50,7 +50,7 @@
     <title>Commons Rng Release Notes</title>
   </properties>
   <body>
-    <release version="1.0" date="TBD" description="
+    <release version="1.0" date="2016-09-17" description="
 This is the first release of Commons Rng.
 
 The minimum version of the Java platform required to compile and use
diff --git a/src/site/xdoc/download_rng.xml b/src/site/xdoc/download_rng.xml
index 6b57a10..dd28e1d 100644
--- a/src/site/xdoc/download_rng.xml
+++ b/src/site/xdoc/download_rng.xml
@@ -61,9 +61,94 @@
   </properties>
   <body>
     <section name="Download Apache Commons Rng">
-      <!-- DO NOT RUN "mvn commons:download-page" until there is something to download
-           from this page -->
-      <i>Coming soon.</i>
+    <subsection name="Using a Mirror">
+      <p>
+        We recommend you use a mirror to download our release
+        builds, but you <strong>must</strong> <a href="http://www.apache.org/info/verification.html">verify the integrity</a> of
+        the downloaded files using signatures downloaded from our main
+        distribution directories. Recent releases (48 hours) may not yet
+        be available from all the mirrors.
+      </p>
+
+      <p>
+        You are currently using <b>[preferred]</b>.  If you
+        encounter a problem with this mirror, please select another
+        mirror.  If all mirrors are failing, there are <i>backup</i>
+        mirrors (at the end of the mirrors list) that should be
+        available.
+        <br></br>
+        [if-any logo]<a href="[link]"><img align="right" src="[logo]" border="0"></img></a>[end]
+      </p>
+
+      <form action="[location]" method="get" id="SelectMirror">
+        <p>
+          Other mirrors:
+          <select name="Preferred">
+          [if-any http]
+            [for http]<option value="[http]">[http]</option>[end]
+          [end]
+          [if-any ftp]
+            [for ftp]<option value="[ftp]">[ftp]</option>[end]
+          [end]
+          [if-any backup]
+            [for backup]<option value="[backup]">[backup] (backup)</option>[end]
+          [end]
+          </select>
+          <input type="submit" value="Change"></input>
+        </p>
+      </form>
+
+      <p>
+        It is essential that you
+        <a href="https://www.apache.org/info/verification.html">verify the integrity</a>
+        of downloaded files, preferably using the <code>PGP</code> signature (<code>*.asc</code> files);
+        failing that using the <code>MD5</code> hash (<code>*.md5</code> checksum files).
+      </p>
+      <p>
+        The <a href="https://www.apache.org/dist/commons/KEYS">KEYS</a>
+        file contains the public PGP keys used by Apache Commons developers
+        to sign releases.
+      </p>
+    </subsection>
+    </section>
+    <section name="Apache Commons Rng 1.0 (requires Java 1.6+)">
+      <subsection name="Binaries">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.0-bin.tar.gz">commons-rng-1.0-bin.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.0-bin.tar.gz.md5">md5</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.0-bin.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/rng/binaries/commons-rng-1.0-bin.zip">commons-rng-1.0-bin.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.0-bin.zip.md5">md5</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/binaries/commons-rng-1.0-bin.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Source">
+        <table>
+          <tr>
+              <td><a href="[preferred]/commons/rng/source/commons-rng-1.0-src.tar.gz">commons-rng-1.0-src.tar.gz</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.0-src.tar.gz.md5">md5</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.0-src.tar.gz.asc">pgp</a></td>
+          </tr>
+          <tr>
+              <td><a href="[preferred]/commons/rng/source/commons-rng-1.0-src.zip">commons-rng-1.0-src.zip</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.0-src.zip.md5">md5</a></td>
+              <td><a href="https://www.apache.org/dist/commons/rng/source/commons-rng-1.0-src.zip.asc">pgp</a></td>
+          </tr>
+        </table>
+      </subsection>
+    </section>
+    <section name="Archives">
+        <p>
+          Older releases can be obtained from the archives.
+        </p>
+        <ul>
+          <li class="download"><a href="[preferred]/commons/rng/">browse download area</a></li>
+          <li><a href="https://archive.apache.org/dist/commons/rng/">archives...</a></li>
+        </ul>
     </section>
   </body>
 </document>
