diff --git a/src/site/mdtext/download.mdtext b/src/site/mdtext/download.mdtext
index 5d340de..3c47bd0 100644
--- a/src/site/mdtext/download.mdtext
+++ b/src/site/mdtext/download.mdtext
@@ -1,4 +1,21 @@
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
 
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
 # Download Apache MyFaces Extension Scripting
 
 ## Apache MyFaces Ext-Scripting 1.0.4
@@ -11,5 +28,252 @@
 <table>
     <thead>
         <tr>
+           <td></td>
+           <td>Server</td>
+           <td>Checksum</td>
+           <td>Signature</td>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td>Ext-Script MyFaces 2.1 bundle(jar)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.4/extscript-myfaces20-bundle-1.0.4.jar">extscript-myfaces20-bundle-1.0.4.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.4/extscript-myfaces20-bundle-1.0.4.jar.md5">extscript-myfaces20-bundle-1.0.4.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.4/extscript-myfaces20-bundle-1.0.4.jar.asc">extscript-myfaces20-bundle-1.0.4.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td>Ext-Script OpenWebbeans support library</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-cdi/1.0.4/extscript-cdi-1.0.4.jar">extscript-cdi-1.0.4.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-cdi/1.0.4/extscript-cdi-1.0.4.jar.md5">extscript-cdi-1.0.4.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-cdi/1.0.4/extscript-cdi-1.0.4.jar.asc">extscript-cdi-1.0.4.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Demo Application MyFaces 2.1 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.4/myfaces20-example-1.0.4.jar">myfaces20-example-1.0.4.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.4/myfaces20-example-1.0.4.jar.md5">myfaces20-example-1.0.4.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.4/myfaces20-example-1.0.4.jar.asc">myfaces20-example-1.0.4.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank Application JSF2 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.4/myfaces20-extscript-helloworld-1.0.4.jar">myfaces20-extscript-helloworld-1.0.4.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.4/myfaces20-extscript-helloworld-1.0.4.jar.md5">myfaces20-extscript-helloworld-1.0.4.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.4/myfaces20-extscript-helloworld-1.0.4.jar.asc">myfaces20-extscript-helloworld-1.0.4.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank CDI Application (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces21-extscript-cdi/1.0.4/myfaces21-extscript-cdi-1.0.4.jar">myfaces21-extscript-cdi-1.0.4.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces21-extscript-cdi/1.0.4/myfaces21-extscript-cdi-1.0.4.jar.md5">myfaces21-extscript-cdi-1.0.4.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces21-extscript-cdi/1.0.4/myfaces21-extscript-cdi-1.0.4.jar.asc">myfaces21-extscript-cdi-1.0.4.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank CDI Application (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-root/1.0.4/extscript-root-1.0.4-source-release.jar">extscript-root-1.0.4-source-release.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-root/1.0.4/extscript-root-1.0.4-source-release.jar.md5">extscript-root-1.0.4-source-release.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/mextscript-root/1.0.4/extscript-root-1.0.4-source-release.jar.asc">extscript-root-1.0.4-source-release.jar.asc</a></td>
+        </tr>
+    </tbody>
+</table>
 
-        </tr>
\ No newline at end of file
+## Apache MyFaces Ext-Scripting 1.0.3
+
+ is a general refactoring release for maintainability was performed and basic Scala support has been added.
+ Note, this is the first release, which is Java 6 and MyFaces 2.1.6+ and Servlet 3.0 only. For older versions of
+ MyFaces and Java 5, download Ext-Scripting 1.0.2.
+
+  Release notes can be found [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12320165&styleName=Text&projectId=12310964)
+
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one
+    or more contributor license agreements.  See the NOTICE file
+    distributed with this work for additional information
+    regarding copyright ownership.  The ASF licenses this file
+    to you under the Apache License, Version 2.0 (the
+    "License"); you may not use this file except in compliance
+    with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing,
+    software distributed under the License is distributed on an
+    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+    KIND, either express or implied.  See the License for the
+    specific language governing permissions and limitations
+    under the License.
+-->
+# Download Apache MyFaces Extension Scripting
+
+## Apache MyFaces Ext-Scripting 1.0.4
+
+ Apache MyFaces Ext-Scripting 1.0.4 is the newest version. With OpenWebbeans support and reenabled Windows support.
+
+ Releasenotes can be found [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310964&version=12320341)
+
+
+<table>
+    <thead>
+        <tr>
+           <td></td>
+           <td>Server</td>
+           <td>Checksum</td>
+           <td>Signature</td>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td>Ext-Script MyFaces 2.1 bundle(jar)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.3/extscript-myfaces20-bundle-1.0.3.jar">extscript-myfaces20-bundle-1.0.3.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.3/extscript-myfaces20-bundle-1.0.3.jar.md5">extscript-myfaces20-bundle-1.0.3.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.3/extscript-myfaces20-bundle-1.0.3.jar.asc">extscript-myfaces20-bundle-1.0.3.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Demo Application MyFaces 2.1 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.3/myfaces20-example-1.0.3.jar">myfaces20-example-1.0.3.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.3/myfaces20-example-1.0.3.jar.md5">myfaces20-example-1.0.3.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.3/myfaces20-example-1.0.3.jar.asc">myfaces20-example-1.0.3.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank Application JSF2 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.3/myfaces20-extscript-helloworld-1.0.3.jar">myfaces20-extscript-helloworld-1.0.3.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.3/myfaces20-extscript-helloworld-1.0.3.jar.md5">myfaces20-extscript-helloworld-1.0.3.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.3/myfaces20-extscript-helloworld-1.0.3.jar.asc">myfaces20-extscript-helloworld-1.0.3.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank CDI Application (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-root/1.0.3/extscript-root-1.0.3-source-release.jar">extscript-root-1.0.3-source-release.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-root/1.0.3/extscript-root-1.0.3-source-release.jar.md5">extscript-root-1.0.3-source-release.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/mextscript-root/1.0.3/extscript-root-1.0.3-source-release.jar.asc">extscript-root-1.0.3-source-release.jar.asc</a></td>
+        </tr>
+    </tbody>
+</table>
+
+# Apache MyFaces Ext-Scripting 1.0.3
+
+ is a general refactoring release for maintainability was performed and basic Scala support has been added.
+ Note, this is the first release, which is Java 6 and MyFaces 2.1.6+ and Servlet 3.0 only. For older versions of
+ MyFaces and Java 5, download Ext-Scripting 1.0.2.
+
+  Release notes can be found [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12320165&styleName=Text&projectId=12310964)
+
+## Ext-Scripting 1.0.2 (latest version supporting MyFaces 1.2.x)
+
+ Apache MyFaces Extension Scripting now has a 1.0.2 bugfix release which reenables compatibility with newer MyFaces
+ versions:
+ Apache MyFaces is distributed as jar archives for inclusion and as war archives for the
+ examples.
+
+ Note: this is the last release, which supports Java 5 and MyFaces 1.2.x from version 1.0.3 onwards
+ only Java 6 and JSF 2.1 and Servlet 3.0 will be supported.
+
+ Use the links below to download
+
+  Release notes can be found [here](https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310964&version=12316367)
+
+<table>
+    <thead>
+        <tr>
+           <td></td>
+           <td>Server</td>
+           <td>Checksum</td>
+           <td>Signature</td>
+        </tr>
+    </thead>
+    <tbody>
+        <tr>
+            <td>Ext-Script MyFaces 1.2 bundle(jar)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.2/extscript-myfaces12-bundle-1.0.2.jar">extscript-myfaces12-bundle-1.0.2.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.2/extscript-myfaces12-bundle-1.0.2.jar.md5">extscript-myfaces12-bundle-1.0.2.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces12-bundle/1.0.2/extscript-myfaces12-bundle-1.0.2.jar.asc">extscript-myfaces12-bundle-1.0.2.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td>Ext-Script MyFaces 2.1 bundle(jar)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.2/extscript-myfaces20-bundle-1.0.2.jar">extscript-myfaces20-bundle-1.0.2.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.2/extscript-myfaces20-bundle-1.0.2.jar.md5">extscript-myfaces20-bundle-1.0.2.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-myfaces20-bundle/1.0.2/extscript-myfaces20-bundle-1.0.2.jar.asc">extscript-myfaces20-bundle-1.0.2.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Demo Application MyFaces 1.2 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.2/myfaces12-example-1.0.2.jar">myfaces12-example-1.0.2.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.2/myfaces12-example-1.0.2.jar.md5">myfaces12-example-1.0.2.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces12-example/1.0.2/myfaces12-example-1.0.2.jar.asc">myfaces12-example-1.0.2.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Demo Application MyFaces 2.1 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.2/myfaces20-example-1.0.2.jar">myfaces20-example-1.0.2.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.2/myfaces20-example-1.0.2.jar.md5">myfaces20-example-1.0.2.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-example/1.0.2/myfaces20-example-1.0.2.jar.asc">myfaces20-example-1.0.2.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank Application JSF2 (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.2/myfaces20-extscript-helloworld-1.0.2.jar">myfaces20-extscript-helloworld-1.0.2.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.2/myfaces20-extscript-helloworld-1.0.2.jar.md5">myfaces20-extscript-helloworld-1.0.2.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/myfaces20-extscript-helloworld/1.0.2/myfaces20-extscript-helloworld-1.0.2.jar.asc">myfaces20-extscript-helloworld-1.0.2.jar.asc</a></td>
+        </tr>
+        <tr>
+            <td> Ext-Script Blank CDI Application (war)</td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-root/1.0.2/extscript-root-1.0.2-source-release.jar">extscript-root-1.0.2-source-release.jar</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/extscript-root/1.0.2/extscript-root-1.0.2-source-release.jar.md5">extscript-root-1.0.2-source-release.jar.md5</a></td>
+            <td><a href="https://repository.apache.org/content/repositories/releases/org/apache/myfaces/extensions/scripting/mextscript-root/1.0.2/extscript-root-1.0.2-source-release.jar.asc">extscript-root-1.0.2-source-release.jar.asc</a></td>
+        </tr>
+    </tbody>
+</table>
+
+
+# Manual Checkout and Build
+
+ For manual checkout and building instructions of the Ext-Scripting Trunk  {{{installation.html}Ext-Scripting installation page}}
+
+
+# Latest source code from SVN repository
+
+  If you want to use the latest Apache MyFaces Ext-Scripting features, the source code is under
+  version control with SVN.  Click [here](./source-repository.html)
+  for information on how to use the ASF MyFaces Ext-Scripting SVN Repository.
+
+  Building instructions can be found under [Ext-Scripting installation page](./installation.html)
+
+# Latest source code from SVN repository
+
+ If you want to use the latest Apache MyFaces Test features, the source code is under
+ version control with SVN.  Click [here](source-repository.html)
+ for information on how to use the ASF Test SVN Repository.
+
+# Verifying checksums
+
+ It is essential that you verify the integrity of the downloaded
+ files using the PGP and MD5 signatures. MD5 verification ensures the
+ file was not corrupted during the download process. PGP verification
+ ensures that the file came from a certain person.
+
+ To verify the MD5 signature on the files, you need to use a program
+ called <<<md5>>> or <<<md5sum>>>, which is
+ included in many UNIX distributions.  It is also available as part of
+ [GNU Textutils](http://www.gnu.org/software/textutils/textutils.html).
+ Windows users can get binary md5 programs from [here](http://www.fourmilab.ch/md5/),
+ [here](http://www.pc-tools.net/win32/freeware/console/), or
+ [here](http://www.slavasoft.com/fsum/).
+
+Verifying signatures
+
+ PGP verification ensures that the file came from a certain person.  We strongly recommend
+  you verify your downloads with both PGP and MD5.
+
+ The PGP signatures can be verified using {{{http://www.pgpi.org/}PGP}} or
+ [GPG](http://www.gnupg.org/).  First download the Apache MyFaces
+ [KEYS](http://www.apache.org/dist/myfaces/KEYS)	as well as the <<<asc>>> signature file
+ for the particular distribution. It is important that you get these files from the ultimate
+ trusted source - the main ASF distribution site, rather than from a mirror.
+ Then verify the signatures using ...
+
+	  pgpk -a KEYS
+	  pgpv extscript-myfaces20-bundle-1.0.3.jar.asc extscript-myfaces20-bundle-1.0.3.jar
+
+	  or
+
+	  pgp -ka KEYS
+	  pgp extscript-myfaces20-bundle-1.0.3.jar.asc extscript-myfaces20-bundle-1.0.3.jar
+
+	  or
+
+      gpg --import KEYS
+	  gpg --verify extscript-myfaces20-bundle-1.0.3.jar.asc extscript-myfaces20-bundle-1.0.3.jar
+
