diff --git a/scripts/drop-artifacts.sh b/scripts/drop-artifacts.sh
new file mode 100755
index 0000000..040d7b2
--- /dev/null
+++ b/scripts/drop-artifacts.sh
@@ -0,0 +1,40 @@
+#!/bin/sh
+set -e
+
+echo "Removing old download artifacts from the site."
+
+if [ $# -ne 1 ]; then
+    echo "Usage: $0 <version>"
+    exit 1
+fi
+
+VERSION=$1
+
+DIST_REPOSITORY=https://dist.apache.org/repos/dist/release/myfaces
+
+svn del --force -m "Cleaning up old release artifact ${VERSION} from dist server" \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.tar.gz \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.tar.gz.asc \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.tar.gz.md5 \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.tar.gz.sha1 \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.tar.gz.sha256 \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.zip \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.zip.asc \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.zip.md5 \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.zip.sha1 \
+${DIST_REPOSITORY}/binaries/trinidad-assembly-${VERSION}-dist.zip.sha256 \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.tar.gz \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.tar.gz.asc \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.tar.gz.md5 \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.tar.gz.sha1 \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.tar.gz.sha256 \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.zip \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.zip.asc \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.zip.md5 \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.zip.sha1 \
+${DIST_REPOSITORY}/binaries/trinidad-example-assembly-${VERSION}-example.zip.sha256 \
+${DIST_REPOSITORY}/source/trinidad-${VERSION}-source-release.zip \
+${DIST_REPOSITORY}/source/trinidad-${VERSION}-source-release.zip.asc \
+${DIST_REPOSITORY}/source/trinidad-${VERSION}-source-release.zip.md5 \
+${DIST_REPOSITORY}/source/trinidad-${VERSION}-source-release.zip.sha1 \
+${DIST_REPOSITORY}/source/trinidad-${VERSION}-source-release.zip.sha256
\ No newline at end of file
diff --git a/scripts/gpg-sign-all b/scripts/gpg-sign-all
deleted file mode 100755
index ccd8aed..0000000
--- a/scripts/gpg-sign-all
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/bin/sh
-# -----------------------------------------------------------------------------
-# 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.
-# -----------------------------------------------------------------------------
-
-DEFAULT_KEY="you@apache.org"
-PASSWORD="YOURPASSWD"
-
-
-for FILE in $(find . -not '(' -name "*.md5" -or -name "*.sha1" -or -name "*.asc" ')' -and -type f) ; do
-	echo -n "Signing: $FILE ... "
-
-	md5sum "$FILE" | cut "-d " -f1 > "$FILE.md5"
-	sha1sum "$FILE" | cut "-d " -f1 > "$FILE.sha1"
-
-	echo "$PASSWORD" | gpg --default-key "$DEFAULT_KEY" --detach-sign --armor --no-tty --yes --passphrase-fd 0 "$FILE" && echo done.
-done
-
diff --git a/scripts/trinidad-build-release.py b/scripts/trinidad-build-release.py
deleted file mode 100755
index c9ab708..0000000
--- a/scripts/trinidad-build-release.py
+++ /dev/null
@@ -1,127 +0,0 @@
-#!/usr/bin/python
-# -----------------------------------------------------------------------------
-# 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.
-# -----------------------------------------------------------------------------
-import os, sys, posixpath
-from xml.dom.minidom import parse
-
-### Run the script as
-### ./trinidad-build-release.py verysecret /home/matzew/work/source/dude
-###
-
-#global variables, customize them...
-home = '/home/matzew'
-stagingHome = home
-remoteHome  = home
-staging = stagingHome + '/staging'
-remote  = remoteHome + '/public_html/trinidad'
-remoteServer = 'people.apache.org'
-stagingRepository = 'matzewStaging::default::scp://minotaur.apache.org/home/matzew/public_html/staging_repo'
-
-#script begins
-def directoryExists(directory):
-  return os.system('[ -d ' + directory + ' ]') == 0  
-
-def fileExists(filename):
-  return os.system('[ -f ' + filename + ' ]') == 0  
-
-def runCommand(command, directory='', tries=1):
-  cmdline = 'set -e; '
-  if directory != '':
-    cmdline += 'cd "'+directory+'"; '
-  cmdline += command
-  myrange = xrange(tries)
-  for i in myrange:
-    if(os.system(cmdline) == 0):
-      return
-  print 'Command Failed:', cmdline
-  sys.exit(1)
-
-def runRemoteCommand(server, command, tries=3):
-  cmdline = 'ssh '+server+' "'+command+'"'
-  runCommand(cmdline, '', tries)
-
-def signFiles(directory):
-  runCommand('for path in `ls -b`;do echo '+passphrase+'|gpg --clearsign --passphrase-fd "$path" -o "$path.asc";done', directory)
-
-def generateChecksums(directory):
-  runCommand('for path in `ls -b *.zip *.tar.gz *.asc`;do md5sum $path > $path.md5;sha1sum $path > $path.sha1;done',directory)
-
-def copyFiles(fromDir, toDir):
-  runCommand('cp * "'+toDir+'"', fromDir)
-  
-def buildAssembly(srcDir, destination):
-  print 'Assembling: ', srcDir
-  runCommand('mvn -e clean install package assembly:assembly -Dgpg.passphrase='+passphrase, srcDir, 3)
-  srcDir += '/target/assembly/out'
-  signFiles(srcDir)
-  generateChecksums(srcDir)
-  copyFiles(srcDir, destination)
-
-def getPomVersion(pomFile):
-  document = parse(pomFile)
-  for node in document.documentElement.childNodes:
-    if node.nodeType == node.ELEMENT_NODE and node.nodeName == 'version':
-        #actually get version
-        for txtNode in node.childNodes:
-          if txtNode.nodeType == node.TEXT_NODE or txtNode.nodeType == node.CDATA_SECTION_NODE:
-            nodeVal = txtNode.nodeValue.strip()
-          if nodeVal != '':
-            return nodeVal
-  print 'Unable to get pom version:', pomFile
-  sys.exit(1)
-
-passphrase = sys.argv[1]
-
-numSrc = xrange(2, len(sys.argv))
-for srcindx in numSrc:
-  srcDir = sys.argv[srcindx]
-  version = getPomVersion(srcDir + '/pom.xml')
-  stagingDir = staging + '/' + version
-  print 'Staging Directory:', stagingDir
-  if directoryExists(stagingDir):
-    print 'Deleting old staging directory'+stagingDir
-    runCommand('rm -Rf '+stagingDir)
-  archive = version + '.tar.gz'
-  stagingArc = staging + '/' + archive
-  print 'Staging Archive:', stagingArc
-  if fileExists(stagingArc):
-    print 'Deleting old staging archive',stagingArc
-    runCommand('rm -R '+stagingArc)
-  runCommand('mkdir '+stagingDir)
-
-  ## release plugin interaction (requires 2.0 of the release plugin)
-  runCommand('mvn -e release:stage -DstagingRepository='+ stagingRepository +' -DperformRelease=true -Dgpg.passphrase='+passphrase, srcDir, 2)
-
-  buildAssembly(srcDir+'/trinidad-assembly', stagingDir)
-  runCommand('mvn -e clean source:jar install', srcDir + '/trinidad-examples',2)
-  buildAssembly(srcDir+'/trinidad-example/trinidad-example-assembly', stagingDir)
-
-  #do some cleanup
-  #runCommand('rm -Rf trinidad-blank trinidad-demo trinidad-example', stagingDir+"/org/apache/myfaces/trinidad")
-  #package everything up
-
-  print 'Creating archive for transfer:',stagingArc
-  runCommand('tar czf '+stagingArc+' '+version, staging)
-  remoteDir = remote + version
-  print 'Remote Directory:', remoteServer + ':' + remoteDir
-  print 'Removing old archive from server'
-  remoteArc  = remoteHome + '/' + archive
-  runRemoteCommand(remoteServer, 'if [ -f '+remoteArc+' ]; then rm -f '+remoteArc+';fi')
-  print 'Transfering archive to server'
-  runCommand('scp '+stagingArc+' '+remoteServer+':'+remoteHome, '', 3)
-  print 'Replacing the old staging directories on apache.  (See http://people.apache.org/~matzew/trinidad/'+version+')'
-  runRemoteCommand(remoteServer, 'if [ -d '+remoteDir+' ]; then rm -Rf '+remoteDir+';fi;cd '+remote+';tar -xzf '+remoteArc)
diff --git a/src/site/apt/download.apt b/src/site/apt/download.apt
index fd16aa9..4ed44a5 100644
--- a/src/site/apt/download.apt
+++ b/src/site/apt/download.apt
@@ -38,19 +38,19 @@
       Release notes can be found
     {{{https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12310661&version=12340363}here}}.
 
-  *-------------------------+---------+----------+-----------+
-  |                         | Mirrors | Checksum | Signature |
-  *-------------------------+---------+----------+-----------+
-  | Apache MyFaces Trinidad 2.2.0 (tar.gz) | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.tar.gz} trinidad-assembly-2.2.0-dist.tar.gz}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.tar.gz.md5} trinidad--assembly-2.2.0-dist.tar.gz.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.tar.gz.asc} trinidad--assembly-2.2.0-dist.tar.gz.asc}} |
-  *-------------------------+---------+----------+-----------+
-  | Apache MyFaces Trinidad 2.2.0 (zip)    | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.zip} trinidad-assembly-2.2.0-dist.zip}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.zip.md5} trinidad-assembly-2.2.0-dist.zip.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.zip.asc} trinidad-assembly-2.2.0-dist.zip.asc}} |
-  *-------------------------+---------+----------+-----------+
-  | Apache MyFaces Trinidad 2.2.0 Example (tar.gz)    | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.tar.gz} trinidad-example-assembly-2.2.0-example.tar.gz}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.tar.gz.md5} trinidad-example-assembly-2.2.0-example.tar.gz.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.tar.gz.asc} trinidad-example-assembly-2.2.0-example.tar.gz.asc}} |
-  *-------------------------+---------+----------+-----------+
-  | Apache MyFaces Trinidad 2.2.0 Example (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.zip} trinidad-example-assembly-2.2.0-example.zip}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.zip.md5} trinidad-example-assembly-2.2.0-example.zip.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.zip.asc} trinidad-example-assembly-2.2.0-example.zip.asc}} |
-  *-------------------------+---------+----------+-----------+
-  | Apache MyFaces Trinidad 2.2.0 Source (zip)       | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/trinidad-2.2.0-source-release.zip} trinidad-2.2.0-source-release.zip}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/trinidad-2.2.0-source-release.zip.md5} trinidad-2.2.0-source-release.zip.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/trinidad-2.2.0-source-release.zip.asc} trinidad-2.2.0-source-release.zip.asc}} |
-  *-------------------------+---------+----------+-----------+
+*-------------------------+---------+----------+-----------+
+|                         | Mirrors | Checksum | Signature |
+*-------------------------+---------+----------+-----------+
+| Apache MyFaces Trinidad 2.2.0 (tar.gz) | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.tar.gz} trinidad-assembly-2.2.0-dist.tar.gz}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.tar.gz.md5} trinidad--assembly-2.2.0-dist.tar.gz.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.tar.gz.asc} trinidad--assembly-2.2.0-dist.tar.gz.asc}} |
+*-------------------------+---------+----------+-----------+
+| Apache MyFaces Trinidad 2.2.0 (zip)    | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.zip} trinidad-assembly-2.2.0-dist.zip}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.zip.md5} trinidad-assembly-2.2.0-dist.zip.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-assembly-2.2.0-dist.zip.asc} trinidad-assembly-2.2.0-dist.zip.asc}} |
+*-------------------------+---------+----------+-----------+
+| Apache MyFaces Trinidad 2.2.0 Example (tar.gz)    | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.tar.gz} trinidad-example-assembly-2.2.0-example.tar.gz}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.tar.gz.md5} trinidad-example-assembly-2.2.0-example.tar.gz.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.tar.gz.asc} trinidad-example-assembly-2.2.0-example.tar.gz.asc}} |
+*-------------------------+---------+----------+-----------+
+| Apache MyFaces Trinidad 2.2.0 Example (zip)      | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.zip} trinidad-example-assembly-2.2.0-example.zip}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.zip.md5} trinidad-example-assembly-2.2.0-example.zip.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/binaries/trinidad-example-assembly-2.2.0-example.zip.asc} trinidad-example-assembly-2.2.0-example.zip.asc}} |
+*-------------------------+---------+----------+-----------+
+| Apache MyFaces Trinidad 2.2.0 Source (zip)       | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/trinidad-2.2.0-source-release.zip} trinidad-2.2.0-source-release.zip}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/trinidad-2.2.0-source-release.zip.md5} trinidad-2.2.0-source-release.zip.md5}} | {{{http://www.apache.org/dyn/closer.cgi/myfaces/source/trinidad-2.2.0-source-release.zip.asc} trinidad-2.2.0-source-release.zip.asc}} |
+*-------------------------+---------+----------+-----------+
 
 
     << Apache MyFaces Trinidad 2.1.3 Distribution for JSF 2.1 >>
diff --git a/src/site/site.xml b/src/site/site.xml
index 2e238dc..c2b9c7e 100644
--- a/src/site/site.xml
+++ b/src/site/site.xml
@@ -35,7 +35,7 @@
   <skin>
     <groupId>org.apache.myfaces.maven</groupId>
     <artifactId>myfaces-site-skin</artifactId>
-    <version>1</version>
+    <version>4</version>
   </skin>
   <body>
     <links>
diff --git a/src/site/xdoc/index.xml b/src/site/xdoc/index.xml
index 1c1aef0..8285e60 100644
--- a/src/site/xdoc/index.xml
+++ b/src/site/xdoc/index.xml
@@ -52,18 +52,20 @@
 <li>A dialog framework</li>
 <li>pageFlowScope, for communicating between pages</li>
 </ul>
-      </p>
+      </p>
         <p>
       Apache MyFaces Trinidad currently supports the following JSF versions:
 <ul>
-<li>JSF 1.1: supported by the Apache MyFaces Trinidad 1.0.x line </li>
-<li>JSF 1.2: supported by the Apache MyFaces Trinidad 1.2.x line </li>
-<li>JSF 2.0: supported by the Apache MyFaces Trinidad 2.0.x line </li>
+    <li>JSF 1.1: supported by the Apache MyFaces Trinidad 1.0.x line </li>
+    <li>JSF 1.2: supported by the Apache MyFaces Trinidad 1.2.x line </li>
+    <li>JSF 2.0: supported by the Apache MyFaces Trinidad 2.0.x line </li>
+    <li>JSF 2.1: supported by the Apache MyFaces Trinidad 2.1.x line </li>
+    <li>JSF 2.2: supported by the Apache MyFaces Trinidad 2.2.x line </li>
 </ul>
-      </p>
-<p>
-Go to our <a href="download.html">download section</a> to get the latest version that fits your needs.
-</p>
+      </p>
+<p>
+Go to our <a href="download.html">download section</a> to get the latest version that fits your needs.
+</p>
       </section>
 
       <section name="Documentation">
