Applied patches/fixed bugs

git-svn-id: https://svn.apache.org/repos/asf/jakarta/tapestry/branches/branch-3-0@385802 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/config/common.properties b/config/common.properties
index 7ade323..94d02b0 100644
--- a/config/common.properties
+++ b/config/common.properties
@@ -86,7 +86,7 @@
 # ---- Javassist ----
 
 javassist.version=2.5.1
-javassist.loc=http://telia.dl.sourceforge.net/sourceforge/jboss/javassist-${javassist.version}.zip
+javassist.loc=http://umn.dl.sourceforge.net/sourceforge/jboss/javassist-${javassist.version}.zip
 javassist.dest=${ext.download.dir}/javassist-${javassist.version}
 javassist.ext.jar=${root.lib.dir}/${ext.dir}/javassist-${javassist.version}.jar
 javassist.jar=${javassist.dest}/javassist.jar
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc b/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc
index 9c793a1..2003fb3 100644
--- a/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc
+++ b/contrib/src/org/apache/tapestry/contrib/table/components/FormTable.jwc
@@ -234,7 +234,7 @@
 	<component id="tableRows" type="TableFormRows">
 		<inherited-binding name="row" parameter-name="row"/>
 		<inherited-binding name="class" parameter-name="rowsClass"/>
-        <binding name="convertor" expression="convertor"/>
+    <inherited-binding name="convertor" expression="convertor"/>
 	</component>
 
 	<component id="tableValues" type="TableValues">
diff --git a/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java b/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java
index b9c78d3..c7b5bb7 100644
--- a/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java
+++ b/contrib/src/org/apache/tapestry/contrib/table/components/TableUtils.java
@@ -54,12 +54,10 @@
 
     public static String format(String key, Object[] args)
     {
-        if (s_objStrings == null) {
             synchronized (TableUtils.class) {
                 if (s_objStrings == null)
                     s_objStrings = ResourceBundle.getBundle("org.apache.tapestry.contrib.table.components.TableStrings");
             }
-        }
 
         String pattern = s_objStrings.getString(key);
 
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java b/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java
index a84b1c4..f3f6b3a 100644
--- a/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java
+++ b/contrib/src/org/apache/tapestry/contrib/table/model/ognl/OgnlTableColumnEvaluator.java
@@ -49,15 +49,12 @@
 		if (m_strExpression == null || m_strExpression.equals(""))
 			return "";
 
-		if (m_objParsedExpression == null)
-		{
 			synchronized (this)
 			{
 				if (m_objParsedExpression == null)
 					m_objParsedExpression =
 						OgnlUtils.getParsedExpression(m_strExpression);
 			}
-		}
 
 		try
 		{
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnFormRendererSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnFormRendererSource.java
index 0980327..8c43b9a 100644
--- a/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnFormRendererSource.java
+++ b/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnFormRendererSource.java
@@ -52,8 +52,6 @@
 		ITableColumn objColumn,
 		Object objRow)
 	{
-		if (m_objComponentRenderer == null)
-		{
 			synchronized (this)
 			{
 				if (m_objComponentRenderer == null)
@@ -67,7 +65,6 @@
 						new ComponentTableRendererSource(objAddress);
 				}
 			}
-		}
 
 		return m_objComponentRenderer.getRenderer(
 			objCycle,
diff --git a/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnRendererSource.java b/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnRendererSource.java
index b295a1c..ee0658e 100644
--- a/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnRendererSource.java
+++ b/contrib/src/org/apache/tapestry/contrib/table/model/simple/SimpleTableColumnRendererSource.java
@@ -52,8 +52,6 @@
 		ITableColumn objColumn,
 		Object objRow)
 	{
-		if (m_objComponentRenderer == null)
-		{
 			synchronized (this)
 			{
 				if (m_objComponentRenderer == null)
@@ -67,7 +65,6 @@
 						new ComponentTableRendererSource(objAddress);
 				}
 			}
-		}
 
 		return m_objComponentRenderer.getRenderer(
 			objCycle,
diff --git a/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableValueRenderSource.java b/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableValueRenderSource.java
index 44aff1c..2057138 100644
--- a/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableValueRenderSource.java
+++ b/contrib/src/org/apache/tapestry/contrib/tree/components/table/TreeTableValueRenderSource.java
@@ -51,8 +51,6 @@
 		ITableColumn objColumn,
 		Object objRow)
 	{
-		if (m_objComponentRenderer == null)
-		{
 			synchronized (this)
 			{
 				if (m_objComponentRenderer == null)
@@ -67,7 +65,6 @@
 						new ComponentTableRendererSource(objAddress);
 				}
 			}
-		}
 
 		return m_objComponentRenderer.getRenderer(
 			objCycle,
diff --git a/examples/Tutorial2/build.xml b/examples/Tutorial2/build.xml
deleted file mode 100644
index ea17781..0000000
--- a/examples/Tutorial2/build.xml
+++ /dev/null
@@ -1,138 +0,0 @@
-<?xml version="1.0"?>
-
-<project name="Simple Dev Environment" default="compile">
-
-  <!-- This should point to where you have Tapestry installed -->
-  <property name="tapestry.install.dir" value="../../"/>
-
-  <!-- This property is only required if you wish to deploy to -->
-  <!-- your favorite web container. Ignore otherwise -->
-  <property name="deployment.dir" value="./deploy"/>
-
-  <!-- NO NEED TO CHANGE ANYTHING FROM HERE DOWN -->
-
-  <property name="classes.dir" value="./web/WEB-INF/classes"/>
-  <property name="src.dir" value="./src"/>
-  <property name="war.dir" value="./webapps"/>
-  <property name="war.name" value="learn-tapestry.war"/>
-
-  <property name="root.dir" value="${tapestry.install.dir}"/>
-  <property file="${root.dir}/config/Version.properties"/>
-  <property file="${root.dir}/config/build.properties"/>
-  <property file="${root.dir}/config/common.properties"/>
-  <property name="private.dir" value="private"/>
-
-  <path id="tutorial.classpath">
-	<pathelement location="${lib.ext.dir}/javax.servlet.jar"/>	
-	<pathelement location="${lib.ext.dir}/${commons-logging.jar}"/>
-	<pathelement location="${lib.ext.dir}/${commons-lang.jar}"/>	
-	<pathelement location="${lib.ext.dir}/${log4j.jar}"/>
-	<pathelement location="${lib.ext.dir}/javax.xml.jaxp.jar"/>
-	<pathelement location="${lib.ext.dir}/org.apache.crimson.jar"/>
-    <pathelement location="${lib.ext.dir}/${jetty.jar}"/>
-	<pathelement location="${lib.ext.dir}/${jakarta-oro.jar}"/>
-	<pathelement location="${lib.ext.dir}/${ognl.jar}"/>
-    <pathelement location="${lib.ext.dir}/${bsf.jar}"/>	
-	<pathelement location="config"/>
-  </path>
-
-  <path id="libs">
-    <fileset dir="${tapestry.install.dir}/lib">
-      <include name="net.sf.*.jar"/>
-    </fileset>
-    <fileset dir="${tapestry.install.dir}/lib/ext">
-      <include name="*.jar"/>
-    </fileset>
-  </path>
-
-  <target name="prepare">
-    <mkdir dir="${deployment.dir}"/>
-    <mkdir dir="${war.dir}"/>
-    <mkdir dir="${src.dir}"/>
-    <mkdir dir="${classes.dir}"/>
-    <mkdir dir="web/WEB-INF/lib"/>
-
-    <copy todir="${classes.dir}">
-        <fileset dir="${src.dir}">
-	  <include name="**/*.page"/>
-	  <include name="**/*.jwc"/>
-	  <include name="**/*.html"/>
-	  <include name="**/*.application"/>
-	</fileset>
-    </copy>
-
-    <copy todir="web/WEB-INF/lib">
-     <fileset dir="${tapestry.install.dir}/lib">
-      <include name="net.sf.*"/>
-     </fileset>
-    </copy>
-  </target>
-
-  <target name="compile" depends="prepare">
-    <javac srcdir="${src.dir}"
-	   destdir="${classes.dir}" target="1.1" source="1.3">
-      <classpath refid="libs"/>
-    </javac>
-  </target>
-
-  <!-- Run your code within the standard Jetty Web Container -->
-  <target name="run" depends="war">
-    <delete dir="${private.dir}" quiet="true"/>
-    <mkdir dir="${private.dir}"/>
-
-    <echo>Running you example code on port 8081 ...</echo>
-    <java
-	  classname="org.mortbay.jetty.Server"	  fork="true"	  maxmemory="128MB">
-
-      <classpath>
-      	<!-- Favor files in src over copies in classes -->
-      	<pathelement location="${src.dir}"/>
-        <pathelement location="./config"/>
-              	     
-        <path refid="tutorial.classpath"/>
-        <pathelement location="${lib.ext.dir}/org.mortbay.jetty.jar"/>
-        
-        <pathelement location="${classes.dir}"/>
-      </classpath>
-
-      <arg value="config/jetty-dev-env.xml"/>
-
-      <!-- Enable debugging when running the tutorial -->
-      <jvmarg line="-showversion -Xdebug -Xnoagent"/>
-      <jvmarg line="-Xrunjdwp:transport=dt_socket,suspend=n,server=y,address=20150"/>
-      <sysproperty key="java.compiler" value="NONE"/>
-      
-      <sysproperty key="net.sf.tapestry.disable-caching" value="true"/>
-      <sysproperty key="net.sf.tapestry.enable-reset-service" value="true"/>
-
-      <!-- Jetty can get easily confused (under NT) unless this is turned off. -->
-      <sysproperty key="org.mortbay.util.FileResource.checkAliases" value="false"/>
-
-
-      <!--
-      This is enabled only if we want to use the private asset service
-      <sysproperty key="net.sf.tapestry.asset.dir" value="${private.dir}"/>
-      <sysproperty key="net.sf.tapestry.asset.URL" value="/private"/>
-      -->
-    </java>
-  </target>
-
-  <target name="war" depends="compile">
-    <jar destfile="${war.dir}/${war.name}"
-	 basedir="./web"/>
-  </target>
-
-  <target name="deploy" depends="war">
-    <copy todir="${deployment.dir}">
-      <fileset dir="${war.dir}"/>
-    </copy>
-  </target>
-
-  <target name="clean">
-    <delete dir="${war.dir}"/>
-		<delete dir="${classes.dir}"/>
-		<delete dir="${private.dir}"/>
-		<delete dir="${deployment.dir}"/>
-  </target>
-
-</project>
diff --git a/examples/Tutorial2/config/jetty-dev-env.xml b/examples/Tutorial2/config/jetty-dev-env.xml
deleted file mode 100644
index a5a855e..0000000
--- a/examples/Tutorial2/config/jetty-dev-env.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"  encoding="ISO-8859-1"?> 
-<!-- $Id$ -->
-<!DOCTYPE Configure PUBLIC
-	"-//Mort Bay Consulting//DTD Configure 1.2//EN"
-	"http://jetty.mortbay.org/configure_1_2.dtd">
-
-<Configure class="org.mortbay.jetty.Server">
-
-  <Call name="addListener">
-    <Arg>
-      <New class="org.mortbay.http.SocketListener">
-        <Set name="Port">8080</Set>
-        <Set name="MinThreads">1</Set>
-        <Set name="MaxThreads">10</Set>
-        <Set name="MaxIdleTimeMs">50000</Set>
-      </New>
-    </Arg>
-  </Call>
-  
-  <!-- By moving web.xml into WEB-INF, the working directory ends up with the
-       approximate format of a WAR. -->
-
-  <Call name="addWebApplication">
-    <Arg>/tutorial</Arg>
-    <Arg>./web</Arg>
-    <Set name="DefaultsDescriptor">./config/webdefault.xml</Set>
-  </Call>
-  
-  <Call name="addContext">
-    <Arg>/</Arg>   
-    <Set name="realmName">Jetty Demo Realm</Set>
-   
-    <Call name="addServlet">
-      <Arg>Admin</Arg>
-      <Arg>/</Arg>
-      <Arg>org.mortbay.servlet.AdminServlet</Arg>
-    </Call>
-    
-    <Call name="setAttribute">
-      <Arg>org.mortbay.http.HttpServer</Arg>
-      <Arg><Call name="getHttpServer"/></Arg>
-    </Call>
-  </Call>    
-</Configure>
\ No newline at end of file
diff --git a/examples/Tutorial2/config/webdefault.xml b/examples/Tutorial2/config/webdefault.xml
deleted file mode 100644
index 7751b2e..0000000
--- a/examples/Tutorial2/config/webdefault.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">   
-<!-- $Id$ -->
-
-<web-app>
-  <description>
-    Default web.xml file.  
-    This file is applied to a Web application before it's own WEB_INF/web.xml file
-  </description>
- 
-
-  <servlet>
-    <servlet-name>Default</servlet-name>
-    <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-    <init-param>
-      <param-name>acceptRanges</param-name>
-      <param-value>true</param-value>
-    </init-param>
-    <init-param>
-      <param-name>dirAllowed</param-name>
-      <param-value>true</param-value>
-    </init-param>
-    <init-param>
-      <param-name>putAllowed</param-name>
-      <param-value>false</param-value>
-    </init-param>
-    <init-param>
-      <param-name>delAllowed</param-name>
-      <param-value>false</param-value>
-    </init-param>
-    <init-param>
-      <param-name>redirectWelcome</param-name>
-      <param-value>true</param-value>
-    </init-param>
-    <load-on-startup>1</load-on-startup>
-  </servlet>
-  
-
-  <!-- ==================================================================== -->
-  <servlet-mapping>
-    <servlet-name>Default</servlet-name>
-    <url-pattern>/</url-pattern>
-  </servlet-mapping>
-
-  <!-- ==================================================================== -->
-  <session-config>
-    <session-timeout>60</session-timeout>
-  </session-config>
-
-  <!-- ==================================================================== -->
-  <welcome-file-list>
-    <welcome-file>index.html</welcome-file>
-    <welcome-file>index.htm</welcome-file>
-  </welcome-file-list>
-
-</web-app>
-
diff --git a/examples/Tutorial2/src/log4j.properties b/examples/Tutorial2/src/log4j.properties
deleted file mode 100644
index 8fca54f..0000000
--- a/examples/Tutorial2/src/log4j.properties
+++ /dev/null
@@ -1,10 +0,0 @@
-# Set root category priority to DEBUG and its only appender to A1.
-log4j.rootCategory=DEBUG, A1
-  
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-  
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=%c{1} [%p] %m%n
-
diff --git a/examples/Tutorial2/src/tutorial/assets/Assets.application b/examples/Tutorial2/src/tutorial/assets/Assets.application
deleted file mode 100644
index bf6a5be..0000000
--- a/examples/Tutorial2/src/tutorial/assets/Assets.application
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Simple.application,v 1.8 2002/07/27 15:11:59 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.2//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_2.dtd">
-	
-<application name="Assets tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
-  <page name="Home" specification-path="/tutorial/assets/Home.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/assets/AssetsServlet.java b/examples/Tutorial2/src/tutorial/assets/AssetsServlet.java
deleted file mode 100644
index 4e4ef42..0000000
--- a/examples/Tutorial2/src/tutorial/assets/AssetsServlet.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.assets;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id: SimpleServlet.java,v 1.9 2002/05/04 12:43:31 hship Exp $
- *  @author Howard Lewis Ship
- *
- */
-
-public class AssetsServlet extends ApplicationServlet
-{
-	protected String getApplicationSpecificationPath()
-	{
-		return "/tutorial/assets/Assets.application";
-	}
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/assets/Home.html b/examples/Tutorial2/src/tutorial/assets/Home.html
deleted file mode 100644
index 135715d..0000000
--- a/examples/Tutorial2/src/tutorial/assets/Home.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Assets Example</title>
-</head>
-<body>
-
-    <table cellpadding="8" valign="middle">
-        <tr>
-         <td>
-            <a href="http://tapestry.sourceforge.net/">
-                <img jwcid="poweredbyImage" alt="View Tapestry Home"/>
-            </a>
-         </td>
-         <td>
-              <font color="navy" size="+2"><b><i>Powered by Tapestry</i></b></font>
-         </td>
-        </tr>
-    </table>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/assets/Home.page b/examples/Tutorial2/src/tutorial/assets/Home.page
deleted file mode 100644
index 0505765..0000000
--- a/examples/Tutorial2/src/tutorial/assets/Home.page
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.jwc,v 1.4 2001/05/22 15:24:16 hship Exp $ -->
-<!DOCTYPE page-specification PUBLIC "-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_2.dtd">
-	
-<page-specification class="net.sf.tapestry.html.BasePage">
-  
-  <component id="poweredbyImage" type="Image">
-    <binding name="image" expression="assets.imageAsset"/>
-  </component>
-
-  <context-asset name="imageAsset" path="/images/poweredby.jpg"/>
-
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/components/ArrayViewer.html b/examples/Tutorial2/src/tutorial/components/ArrayViewer.html
deleted file mode 100644
index 7f3378e..0000000
--- a/examples/Tutorial2/src/tutorial/components/ArrayViewer.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<span jwcid="$content$">
-	<table border=1 width="95%">
-		<tr><td align="center">
-		
-			<table>
-				<tr><th>
-					<span jwcid="heading"/>
-				</th></tr>
-			</table>
-			
-		</td></tr>
-
-		<tr><td>		
-		
-			<table border=1 width="100%">
-				<span jwcid="elements">
-					<tr>
-						<span jwcid="cells">
-							<td>
-								<span jwcid="cell"/>
-							</td>
-						</span>
-					</tr>
-				</span>
-			</table>
-			
-		</td></tr>		
-	</table>
-</span>
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/components/ArrayViewer.java b/examples/Tutorial2/src/tutorial/components/ArrayViewer.java
deleted file mode 100644
index 25422b3..0000000
--- a/examples/Tutorial2/src/tutorial/components/ArrayViewer.java
+++ /dev/null
@@ -1,73 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.components;
-
-import net.sf.tapestry.BaseComponent;
-import net.sf.tapestry.IBinding;
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.components.Foreach;
-
-/**
- * Simple ArrayViewer object, for the Component chapter of the Tutorial
- * @author neil clayton
- */
-public class ArrayViewer extends BaseComponent {
-	/**
-	 * Return the bound heading if there is one, else return a static default heading
-	 */
-	public String getHeading() {
-		IBinding binding = (IBinding)getBinding("heading");
-		if(binding.getObject() != null) {
-			return binding.getObject().toString();
-		}
-		return heading;
-	}
-
-	/**
-	 * Sets the heading.
-	 * @param heading The heading to set
-	 */
-	public void setHeading(String heading) {
-		this.heading = heading;
-	}
-
-	/**
-	 * @see net.sf.tapestry.AbstractComponent#cleanupAfterRender(IRequestCycle)
-	 */
-	protected void cleanupAfterRender(IRequestCycle cycle) {
-		source = null;
-		heading = "Array Viewer";
-		super.cleanupAfterRender(cycle);
-	}
-
-	/**
-	 * Returns the source.
-	 * @return Object
-	 */
-	public Object getSource() {
-		return source;
-	}
-
-	/**
-	 * Sets the source.
-	 * @param source The source to set
-	 */
-	public void setSource(Object source) {
-		this.source = source;
-	}
-
-	private String heading = "Array Viewer";
-	private Object source;
-}
diff --git a/examples/Tutorial2/src/tutorial/components/ArrayViewer.jwc b/examples/Tutorial2/src/tutorial/components/ArrayViewer.jwc
deleted file mode 100644
index d1d0570..0000000
--- a/examples/Tutorial2/src/tutorial/components/ArrayViewer.jwc
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!DOCTYPE component-specification
-      PUBLIC "-//Howard Lewis Ship//Tapestry Specification 1.3//EN"
-      "http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<component-specification class="tutorial.components.ArrayViewer" allow-body="no" allow-informal-parameters="yes">
-
-    <parameter
-        name="source"
-        java-type="java.lang.Object"
-        direction="in"
-        required="yes">
-    </parameter>
-    
-    <parameter
-        name="heading"
-        java-type="java.lang.String"
-        direction="in"
-        required="no">
-    </parameter>
-
-	<component id="elements" type="Foreach">
-		<inherited-binding name="source" parameter-name="source"/>
-	</component>	
-	
-	<component id="cells" type="Foreach">
-		<binding name="source" expression="components.elements.value"/>
-	</component>
-	
-	<component id="heading" type="InsertText">
-		<binding name="value" expression="getHeading()"/>
-	</component>
-	
-	<component id="cell" type="InsertText">
-		<binding name="value" expression="components.cells.value"/>
-	</component>
-
-</component-specification>
diff --git a/examples/Tutorial2/src/tutorial/components/Components.application b/examples/Tutorial2/src/tutorial/components/Components.application
deleted file mode 100644
index 011586c..0000000
--- a/examples/Tutorial2/src/tutorial/components/Components.application
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: HelloWorld.application,v 1.9 2002/08/09 11:54:40 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<application name="Components Tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
- 	<page name="Home" specification-path="/tutorial/components/Home.page"/>
-	<component-alias type="ArrayViewer" specification-path="/tutorial/components/ArrayViewer.jwc" />
-</application>
diff --git a/examples/Tutorial2/src/tutorial/components/ComponentsServlet.java b/examples/Tutorial2/src/tutorial/components/ComponentsServlet.java
deleted file mode 100644
index 27f181a..0000000
--- a/examples/Tutorial2/src/tutorial/components/ComponentsServlet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.components;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id: PageLinkingServlet.java,v 1.1 2002/10/03 15:49:02 scornflake Exp $
- *  @author Howard Lewis Ship
- *
- **/
-
-public class ComponentsServlet extends ApplicationServlet
-{
-    protected String getApplicationSpecificationPath()
-    {
-        return "/tutorial/components/Components.application";
-    }
-
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/components/Home.html b/examples/Tutorial2/src/tutorial/components/Home.html
deleted file mode 100644
index 457bdc2..0000000
--- a/examples/Tutorial2/src/tutorial/components/Home.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Component Creation Tutorial</title>
-</head>
-<body>
-
-	<h1>ArrayViewer example</h1>
-	This pag contains a single instance of ArrayViewer with
-	some sample static data.
-	
-	<hr>
-	<span jwcid="viewer">Viewer Will Go here</span>
-	</hr>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/components/Home.java b/examples/Tutorial2/src/tutorial/components/Home.java
deleted file mode 100644
index df47dc6..0000000
--- a/examples/Tutorial2/src/tutorial/components/Home.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.components;
-
-import net.sf.tapestry.html.BasePage;
-
-/**
- * Example code for the "creating components" section of the tutorial
- * @author neil clayton
- */
-public class Home extends BasePage {
-	public Object[] getArraySource() {
-		return new Object[] {
-			new Object[] { "This is", "a test", "of the array viewer" },
-			new Object[] { "There should be nothing in the next two columns", null, null },
-			new Object[] { new Integer(1234), Boolean.TRUE, this }
-		};
-	}
-}
diff --git a/examples/Tutorial2/src/tutorial/components/Home.page b/examples/Tutorial2/src/tutorial/components/Home.page
deleted file mode 100644
index 7ef348c..0000000
--- a/examples/Tutorial2/src/tutorial/components/Home.page
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.components.Home">
-
-	<component id="viewer" type="ArrayViewer">
-		<static-binding name="heading">Array Viewer Example!</static-binding>
-		<binding name="source" expression="getArraySource()"/>
-	</component>
-
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/events/EventHandling.application b/examples/Tutorial2/src/tutorial/events/EventHandling.application
deleted file mode 100644
index 18457bf..0000000
--- a/examples/Tutorial2/src/tutorial/events/EventHandling.application
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: HelloWorld.application,v 1.9 2002/08/09 11:54:40 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<application name="Event Handling Tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
-  <page name="Home" specification-path="/tutorial/events/Home.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/events/EventHandlingServlet.java b/examples/Tutorial2/src/tutorial/events/EventHandlingServlet.java
deleted file mode 100644
index 026e21d..0000000
--- a/examples/Tutorial2/src/tutorial/events/EventHandlingServlet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.events;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id: PageLinkingServlet.java,v 1.1 2002/10/03 15:49:02 scornflake Exp $
- *  @author Howard Lewis Ship
- *
- **/
-
-public class EventHandlingServlet extends ApplicationServlet
-{
-    protected String getApplicationSpecificationPath()
-    {
-        return "/tutorial/events/EventHandling.application";
-    }
-
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/events/Home.html b/examples/Tutorial2/src/tutorial/events/Home.html
deleted file mode 100644
index a848fa7..0000000
--- a/examples/Tutorial2/src/tutorial/events/Home.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Event Handling Tutorial</title>
-</head>
-<body>
-
-<h1>A simple Generic Link</h1>
-Click <span jwcid="google">here</span> to perform a search at Google.
-
-<h1>ActionLink and DirectLink</h1>
-<p>
-This <span jwcid="direct">direct link</span> will get the time of day,
-save it in a variable of the page, and show it underneath this paragraph
-using a InsertText component.
-</p>
-
-<p>
-This <span jwcid="action">action link</span> will do the same thing
-as the direct link (it uses the same listener method). If you would like
-to observe the difference in processing, run this example from a console
-prompt with debug enabled. The listener method will output the string
-<pre>"TIME LISTENER METHOD CALLED"</pre>. You will notice 
-the place in the render cycle in which the method is called is different
-depending upon the link type that you click.
-</p>
-
-<p>
-<center>
-<span jwcid="timeofday">Time of day (or nothing) will go here</span>
-</center>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/events/Home.java b/examples/Tutorial2/src/tutorial/events/Home.java
deleted file mode 100644
index fc82769..0000000
--- a/examples/Tutorial2/src/tutorial/events/Home.java
+++ /dev/null
@@ -1,49 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.events;
-
-import java.text.DateFormat;
-import java.util.Date;
-
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.RequestCycleException;
-import net.sf.tapestry.html.BasePage;
-
-/**
- * Example code for the event handling section of the tutorial
- * @author neil clayton
- */
-public class Home extends BasePage {
-	/**
-	 * Called by both the "direct" and "action" components
-	 */
-	public void timeListener(IRequestCycle cycle) throws RequestCycleException {
-		System.err.println("TIME LISTENER METHOD CALLED");
-        pageTime = DateFormat.getDateTimeInstance().format(new Date());
-    }
-
-    public String getPageTime() {
-        return pageTime;
-    }
-
-    /**
-     * @see net.sf.tapestry.AbstractPage#detach()
-     */
-    public void detach() {
-        pageTime = null;
-    }
-
-    private String pageTime;
-}
diff --git a/examples/Tutorial2/src/tutorial/events/Home.page b/examples/Tutorial2/src/tutorial/events/Home.page
deleted file mode 100644
index 8c43ec0..0000000
--- a/examples/Tutorial2/src/tutorial/events/Home.page
+++ /dev/null
@@ -1,41 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.events.Home">
-
-	<component id="google" type="GenericLink">
-		<static-binding name="href">http://www.google.com</static-binding>
-	</component>
-	
-	<component id="direct" type="DirectLink">
-		<binding name="listener" expression="listeners.timeListener"/>
-		<binding name="stateful" expression="false"/>
-	</component>
-	
-	<component id="action" type="ActionLink">
-		<binding name="listener" expression="listeners.timeListener"/>
-		<binding name="stateful" expression="false"/>
-	</component>
-	
-	<component id="timeofday" type="InsertText">
-		<binding name="value" expression="pageTime"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/forms/Forms.application b/examples/Tutorial2/src/tutorial/forms/Forms.application
deleted file mode 100644
index 9770fb1..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Forms.application
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: HelloWorld.application,v 1.9 2002/08/09 11:54:40 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<application name="Forms Tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
-  <property name="net.sf.tapestry.visit-class">tutorial.forms.VisitorState</property>
-
-  <page name="Home" specification-path="/tutorial/forms/Home.page"/>
-  <page name="Success" specification-path="/tutorial/forms/Success.page"/>
-  <page name="Part1" specification-path="/tutorial/forms/Part1.page"/>
-  <page name="Part2" specification-path="/tutorial/forms/Part2.page"/>
-  <page name="Part3" specification-path="/tutorial/forms/Part3.page"/>
-  <page name="Part4" specification-path="/tutorial/forms/Part4.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/forms/FormsServlet.java b/examples/Tutorial2/src/tutorial/forms/FormsServlet.java
deleted file mode 100644
index 6db7519..0000000
--- a/examples/Tutorial2/src/tutorial/forms/FormsServlet.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.forms;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id: SimpleServlet.java,v 1.9 2002/05/04 12:43:31 hship Exp $
- *  @author Howard Lewis Ship
- *
- */
-public class FormsServlet extends ApplicationServlet
-{
-	protected String getApplicationSpecificationPath()
-	{
-		return "/tutorial/forms/Forms.application";
-	}
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/forms/Home.html b/examples/Tutorial2/src/tutorial/forms/Home.html
deleted file mode 100644
index 9585f93..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Home.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Forms Tutorial</title>
-</head>
-<body>
-
-<h1>Form Tutorial</h1>
-<p>The form tutorial is split up into a number of parts, which should allow
-you to follow the progression within the tutorial documentation.</p>
-
-The links below take you to pages that increase in complexity and usage 
-of Tapestry form handling. The tutorial covers these in order:
-<ol>
-	<li><span jwcid="page1">Simple Forms</span>
-	<li><span jwcid="page2">Simple Forms, with simple server side validation</span>
-	<li><span jwcid="page3">Simple Forms, with client &amp; server side validation</span>
-	<li><span jwcid="page4">Forms with smarter components</span>
-</ol>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/forms/Home.page b/examples/Tutorial2/src/tutorial/forms/Home.page
deleted file mode 100644
index 04d1a0f..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Home.page
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="net.sf.tapestry.html.BasePage">
-	<component id="page1" type="PageLink">
-		<static-binding name="page">Part1</static-binding>
-	</component>
-	
-	<component id="page2" type="PageLink">
-		<static-binding name="page">Part2</static-binding>
-	</component>
-
-	<component id="page3" type="PageLink">
-		<static-binding name="page">Part3</static-binding>
-	</component>
-
-	<component id="page4" type="PageLink">
-		<static-binding name="page">Part4</static-binding>
-	</component>
-</page-specification>
-
diff --git a/examples/Tutorial2/src/tutorial/forms/Part1.html b/examples/Tutorial2/src/tutorial/forms/Part1.html
deleted file mode 100644
index 950a118..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part1.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Forms Tutorial</title>
-</head>
-<body>
-
-<h1>Form Tutorial</h1>
-Enter some fields on this page, and press the submit button. 
-
-<form jwcid="form">
-	<table>
-		<tr>
-			<td>Your name:</td>
-			<td><input jwcid="name">Neil</input></td>
-		</tr>
-
-		<tr>
-			<td>Date of birth:</td>
-			<td><input jwcid="dateOfBirth"/></td>
-		</tr>
-
-		<tr>
-			<td>Favourite colour:</td>
-			<td><input jwcid="favColour"/></td>
-		</tr>
-
-		<tr>
-			<td colspan=2><input type="submit" jwcid="submit"/></td>
-		</tr>
-	</table>
-</form>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/forms/Part1.java b/examples/Tutorial2/src/tutorial/forms/Part1.java
deleted file mode 100644
index f5f0b2e..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part1.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.forms;
-
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.RequestCycleException;
-import net.sf.tapestry.html.BasePage;
-
-/**
- * Example code for the forms part of Tutorial
- * @author Neil Clayton
- */
-public class Part1 extends BasePage {
-	public void enterDetails(IRequestCycle cycle) throws RequestCycleException {
-		// Submission has been performed. Do something here.
-		cycle.setPage("Success");
-	}
-	
-}
diff --git a/examples/Tutorial2/src/tutorial/forms/Part1.page b/examples/Tutorial2/src/tutorial/forms/Part1.page
deleted file mode 100644
index 31253b4..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part1.page
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.forms.Part1">
-	<bean name="delegate" class="net.sf.tapestry.valid.ValidationDelegate"/>
-
-	<component id="form" type="Form">
-		<binding name="delegate" expression="beans.delegate"/>	
-	</component>
-	
-	<component id="name" type="TextField">
-		<binding name="value" expression="visit.userName"/>
-	</component>
-	
-	<component id="dateOfBirth" type="TextField">
-		<binding name="value" expression="visit.dateOfBirthAsString"/>
-	</component>
-
-	<component id="favColour" type="TextField">
-		<binding name="value" expression="visit.favoriteColour"/>
-	</component>
-	
-	<component id="submit" type="Submit">
-		<binding name="listener" expression="listeners.enterDetails"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/forms/Part2.html b/examples/Tutorial2/src/tutorial/forms/Part2.html
deleted file mode 100644
index da70ecc..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part2.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Forms Tutorial</title>
-</head>
-<body>
-
-<h1>Form Tutorial</h1>
-Enter some fields on this page, and press the submit button. 
-
-<span jwcid="body">
-	<form jwcid="form">
-		<table>
-			<tr>
-				<td>Your name:</td>
-				<td><input jwcid="name">Neil</input></td>
-			</tr>
-	
-			<tr>
-				<td>Date of birth:</td>
-				<td><input jwcid="dateOfBirth"/></td>
-			</tr>
-	
-			<tr>
-				<td>Favourite colour:</td>
-				<td><input jwcid="favColour"/></td>
-			</tr>
-	
-			<tr>
-				<td colspan=2><font color="red"><span jwcid="errors"/></font></td>
-			</tr>
-
-			<tr>
-				<td colspan=2><input type="submit" jwcid="submit"/></td>
-			</tr>
-		</table>
-	</form>
-</span>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/forms/Part2.java b/examples/Tutorial2/src/tutorial/forms/Part2.java
deleted file mode 100644
index caa8428..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.forms;
-
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.RequestCycleException;
-import net.sf.tapestry.html.BasePage;
-import net.sf.tapestry.valid.ValidationDelegate;
-
-/**
- * Example code for the forms part of Tutorial
- * @author Neil Clayton
- */
-public class Part2 extends BasePage {
-	public void enterDetails(IRequestCycle cycle) throws RequestCycleException {
-		// Submission has been performed. Validate the fields
-		ValidationDelegate delegate = (ValidationDelegate)getBeans().getBean("delegate");
-		if(delegate.getHasErrors()) {
-			// there are errors
-			return;
-		}
-		
-		cycle.setPage("Success");
-	}
-	
-}
diff --git a/examples/Tutorial2/src/tutorial/forms/Part2.page b/examples/Tutorial2/src/tutorial/forms/Part2.page
deleted file mode 100644
index 1493c84..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part2.page
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.forms.Part2">
-	<bean name="delegate" class="net.sf.tapestry.valid.ValidationDelegate"/>
-
-	<bean name="stringValidator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
-  		<set-property name="required" expression="true"/>
-  		<set-property name="clientScriptingEnabled" expression="false"/>
- 	</bean>
-
-	<component id="form" type="Form">
-		<binding name="delegate" expression="beans.delegate"/>	
-	</component>
-	
-	<component id="body" type="Body"/>
-	
-	<component id="name" type="ValidField">
-		<binding name="value" expression="visit.userName"/>
-        <binding name="validator" expression='beans.stringValidator'/>
-        <static-binding name="displayName">User name</static-binding>
-	</component>
-	
-	<component id="dateOfBirth" type="ValidField">
-		<binding name="value" expression="visit.dateOfBirthAsString"/>
-        <binding name="validator" expression='beans.stringValidator'/>
-        <static-binding name="displayName">Date of birth</static-binding>
-	</component>
-
-	<component id="favColour" type="ValidField">
-		<binding name="value" expression="visit.favoriteColour"/>
-        <binding name="validator" expression='beans.stringValidator'/>
-        <static-binding name="displayName">Favorite colour</static-binding>
-	</component>
-	
-	<component id="errors" type="Delegator">
-		<binding name="delegate" expression="beans.delegate.firstError"/>
-	</component>
-	
-	<component id="submit" type="Submit">
-		<binding name="listener" expression="listeners.enterDetails"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/forms/Part3.html b/examples/Tutorial2/src/tutorial/forms/Part3.html
deleted file mode 100644
index da70ecc..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part3.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Forms Tutorial</title>
-</head>
-<body>
-
-<h1>Form Tutorial</h1>
-Enter some fields on this page, and press the submit button. 
-
-<span jwcid="body">
-	<form jwcid="form">
-		<table>
-			<tr>
-				<td>Your name:</td>
-				<td><input jwcid="name">Neil</input></td>
-			</tr>
-	
-			<tr>
-				<td>Date of birth:</td>
-				<td><input jwcid="dateOfBirth"/></td>
-			</tr>
-	
-			<tr>
-				<td>Favourite colour:</td>
-				<td><input jwcid="favColour"/></td>
-			</tr>
-	
-			<tr>
-				<td colspan=2><font color="red"><span jwcid="errors"/></font></td>
-			</tr>
-
-			<tr>
-				<td colspan=2><input type="submit" jwcid="submit"/></td>
-			</tr>
-		</table>
-	</form>
-</span>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/forms/Part3.page b/examples/Tutorial2/src/tutorial/forms/Part3.page
deleted file mode 100644
index e3aa8a3..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part3.page
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.forms.Part2">
-	<bean name="delegate" class="net.sf.tapestry.valid.ValidationDelegate"/>
-
-	<bean name="stringValidator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
-  		<set-property name="required" expression="true"/>
-  		<set-property name="clientScriptingEnabled" expression="true"/>
- 	</bean>
-
-	<bean name="dateValidator" class="net.sf.tapestry.valid.DateValidator" lifecycle="page">
-  		<set-property name="required" expression="true"/>
-  		<set-property name="clientScriptingEnabled" expression="true"/>
- 	</bean>
-
-	<component id="form" type="Form">
-		<binding name="delegate" expression="beans.delegate"/>	
-	</component>
-	
-	<component id="body" type="Body"/>
-	
-	<component id="name" type="ValidField">
-		<binding name="value" expression="visit.userName"/>
-        <binding name="validator" expression='beans.stringValidator'/>
-        <static-binding name="displayName">User name</static-binding>
-	</component>
-	
-	<component id="dateOfBirth" type="ValidField">
-		<binding name="value" expression="visit.dateOfBirth"/>
-        <binding name="validator" expression='beans.dateValidator'/>
-        <static-binding name="displayName">Date of birth</static-binding>
-	</component>
-
-	<component id="favColour" type="ValidField">
-		<binding name="value" expression="visit.favoriteColour"/>
-        <binding name="validator" expression='beans.stringValidator'/>
-        <static-binding name="displayName">Favorite colour</static-binding>
-	</component>
-	
-	<component id="errors" type="Delegator">
-		<binding name="delegate" expression="beans.delegate.firstError"/>
-	</component>
-	
-	<component id="submit" type="Submit">
-		<binding name="listener" expression="listeners.enterDetails"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/forms/Part4.html b/examples/Tutorial2/src/tutorial/forms/Part4.html
deleted file mode 100644
index 7c499bb..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part4.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<span jwcid="shell">
-	<span jwcid="body">
-		<h1>Form Tutorial</h1>
-		Enter some fields on this page, and press the submit button. 
-		
-		<form jwcid="form">
-			<table>
-				<tr>
-					<td>Your name:</td>
-					<td><input jwcid="name">Neil</input></td>
-				</tr>
-		
-				<tr>
-					<td>Date of birth:</td>
-					<td><input jwcid="dateOfBirth"/></td>
-				</tr>
-		
-				<tr>
-					<td>Favourite colour:</td>
-					<td><input jwcid="favColour"/></td>
-				</tr>
-		
-				<tr>
-					<td colspan=2><font color="red"><span jwcid="errors"/></font></td>
-				</tr>
-	
-				<tr>
-					<td colspan=2><input type="submit" jwcid="submit"/></td>
-				</tr>
-			</table>
-		</form>
-	</span>
-</span>
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/forms/Part4.java b/examples/Tutorial2/src/tutorial/forms/Part4.java
deleted file mode 100644
index f7a64d4..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part4.java
+++ /dev/null
@@ -1,51 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.forms;
-
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.RequestCycleException;
-import net.sf.tapestry.form.IPropertySelectionModel;
-import net.sf.tapestry.form.StringPropertySelectionModel;
-import net.sf.tapestry.html.BasePage;
-import net.sf.tapestry.valid.ValidationDelegate;
-
-/**
- * Example code for the forms part of Tutorial
- * @author Neil Clayton
- */
-public class Part4 extends BasePage
-{
-	public void enterDetails(IRequestCycle cycle) throws RequestCycleException
-	{
-		// Submission has been performed. Validate the fields
-		ValidationDelegate delegate = (ValidationDelegate) getBeans().getBean("delegate");
-		if (delegate.getHasErrors())
-		{
-			// there are errors
-			return;
-		}
-
-		cycle.setPage("Success");
-	}
-
-	/**
-	 * Returns a set of colours that the user may choose from.
-	 */
-	public static IPropertySelectionModel getColourModel()
-	{
-		return new StringPropertySelectionModel(
-				new String[]{"Black", "Fiji Blue", "Green", "Red", "Yellow"});
-	}
-}
diff --git a/examples/Tutorial2/src/tutorial/forms/Part4.page b/examples/Tutorial2/src/tutorial/forms/Part4.page
deleted file mode 100644
index fca0dfe..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Part4.page
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.forms.Part4">
-	<bean name="delegate" class="net.sf.tapestry.valid.ValidationDelegate"/>
-
-	<bean name="stringValidator" class="net.sf.tapestry.valid.StringValidator" lifecycle="page">
-  		<set-property name="required" expression="true"/>
-  		<set-property name="clientScriptingEnabled" expression="true"/>
- 	</bean>
-
-	<component id="form" type="Form">
-		<binding name="delegate" expression="beans.delegate"/>	
-	</component>
-	
-	<component id="shell" type="Shell">
-		<static-binding name="title">Smarter Components</static-binding>	
-	</component>
-	<component id="body" type="Body"/>
-	
-	<component id="name" type="ValidField">
-		<binding name="value" expression="visit.userName"/>
-        <binding name="validator" expression='beans.stringValidator'/>
-        <static-binding name="displayName">User name</static-binding>
-	</component>
-	
-	<component id="dateOfBirth" type="DatePicker">
-		<binding name="value" expression="visit.dateOfBirth"/>
-	</component>
-
-	<component id="favColour" type="PropertySelection">
-		<binding name="value" expression="visit.favoriteColour"/>
-		<binding name="model" expression="@tutorial.forms.Part4@getColourModel()"/>
-	</component>
-	
-	<component id="errors" type="Delegator">
-		<binding name="delegate" expression="beans.delegate.firstError"/>
-	</component>
-	
-	<component id="submit" type="Submit">
-		<binding name="listener" expression="listeners.enterDetails"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/forms/Success.html b/examples/Tutorial2/src/tutorial/forms/Success.html
deleted file mode 100644
index 431efb1..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Success.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Forms Tutorial [success!]</title>
-</head>
-<body>
-
-<h1>Submission Was OK!</h1>
-<p>You have successfully submitted the form page. The validation (if present)
-on the form has passed. This page shows you the values of the <b>Visit</b> object,
-which was used to hold the field values that you entered on the form:</p>
-
-<center>
-<table border=1 width="70%">
-<tr>
-<td>
-
-<ul>
-	<li>Name: <span jwcid="name"/>
-	<li>Date of Birth: <span jwcid="dob"/>
-	<li>Favorite Colour: <span jwcid="colour"/>
-</ul>
-
-</td>
-</tr>
-</table>
-</center>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/forms/Success.page b/examples/Tutorial2/src/tutorial/forms/Success.page
deleted file mode 100644
index ac76257..0000000
--- a/examples/Tutorial2/src/tutorial/forms/Success.page
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="net.sf.tapestry.html.BasePage">
-	<component id="name" type="InsertText">
-		<binding name="value" expression="visit.userName"/>
-	</component>
-
-	<component id="dob" type="InsertText">
-		<binding name="value" expression="visit.dateOfBirth"/>
-	</component>
-
-	<component id="colour" type="InsertText">
-		<binding name="value" expression="visit.favoriteColour"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/forms/VisitorState.java b/examples/Tutorial2/src/tutorial/forms/VisitorState.java
deleted file mode 100644
index 46944fe..0000000
--- a/examples/Tutorial2/src/tutorial/forms/VisitorState.java
+++ /dev/null
@@ -1,95 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.forms;
-
-import java.io.Serializable;
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.util.Date;
-
-/**
- * Used to capture the state of each user within the web application
- * @author Neil Clayton
- */
-public class VisitorState implements Serializable
-{
-	/**
-	 * Returns the dateOfBirth.
-	 * @return String
-	 */
-	public Date getDateOfBirth()
-	{
-		return dateOfBirth;
-	}
-
-	public String getDateOfBirthAsString()
-	{
-		return DateFormat.getDateInstance().format(dateOfBirth);
-	}
-
-	/**
-	 * Returns the favoriteColour.
-	 * @return String
-	 */
-	public String getFavoriteColour()
-	{
-		return favoriteColour;
-	}
-
-	/**
-	 * Returns the name.
-	 * @return String
-	 */
-	public String getUserName()
-	{
-		return userName;
-	}
-
-	/**
-	 * Sets the dateOfBirth.
-	 * @param dateOfBirth The dateOfBirth to set
-	 */
-	public void setDateOfBirth(Date dateOfBirth)
-	{
-		this.dateOfBirth = dateOfBirth;
-	}
-
-	/**
-	 * Sets the favoriteColour.
-	 * @param favoriteColour The favoriteColour to set
-	 */
-	public void setFavoriteColour(String favoriteColour)
-	{
-		this.favoriteColour = favoriteColour;
-	}
-
-	public void setDateOfBirthAsString(String newDOB) throws ParseException
-	{
-		dateOfBirth = DateFormat.getDateInstance().parse(newDOB);
-	}
-
-	/**
-	 * Sets the name.
-	 * @param name The name to set
-	 */
-	public void setUserName(String name)
-	{
-		this.userName = name;
-	}
-
-	private String userName;
-	private Date dateOfBirth = new Date(0);
-	private String favoriteColour;
-}
diff --git a/examples/Tutorial2/src/tutorial/hello/HelloWorld.application b/examples/Tutorial2/src/tutorial/hello/HelloWorld.application
deleted file mode 100644
index d42ee49..0000000
--- a/examples/Tutorial2/src/tutorial/hello/HelloWorld.application
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: HelloWorld.application,v 1.9 2002/08/09 11:54:40 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<application name="Hello World Tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
-  <page name="Home" specification-path="/tutorial/hello/Home.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/hello/HelloWorldServlet.java b/examples/Tutorial2/src/tutorial/hello/HelloWorldServlet.java
deleted file mode 100644
index 7b8988b..0000000
--- a/examples/Tutorial2/src/tutorial/hello/HelloWorldServlet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.hello;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class HelloWorldServlet extends ApplicationServlet
-{
-    protected String getApplicationSpecificationPath()
-    {
-        return "/tutorial/hello/HelloWorld.application";
-    }
-
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/hello/Home.html b/examples/Tutorial2/src/tutorial/hello/Home.html
deleted file mode 100644
index e4389d1..0000000
--- a/examples/Tutorial2/src/tutorial/hello/Home.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Hello World</title>
-</head>
-<body>
-Welcome to your first <b>Tapestry Application</b>
-<p>
-<h1>
-	<span jwcid="insertSomeText">This text will be replaced by Tapesty</span>
-</h1>
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/hello/Home.java b/examples/Tutorial2/src/tutorial/hello/Home.java
deleted file mode 100644
index f34b567..0000000
--- a/examples/Tutorial2/src/tutorial/hello/Home.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.hello;
-
-import net.sf.tapestry.html.BasePage;
-
-/**
- *  @version $Id$
- *  @author Neil Clayton
- *
- **/
-public class Home extends BasePage
-{
-	public String getSomeText()
-	{
-		return "It's a brave new world!";
-	}
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/hello/Home.page b/examples/Tutorial2/src/tutorial/hello/Home.page
deleted file mode 100644
index 5de9d31..0000000
--- a/examples/Tutorial2/src/tutorial/hello/Home.page
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.hello.Home">
-	<component id="insertSomeText" type="Insert">
-		<binding name="value" expression="someText"/>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/Home.html b/examples/Tutorial2/src/tutorial/pagelinking/Home.html
deleted file mode 100644
index 4df7e90..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/Home.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Page Linking Tutorial</title>
-</head>
-<body>
-
-<h1>The first page</h1>
-The link shown will take you to page two of this application.
-
-Click <a href="#" jwcid="page2">here</a> for the second page!
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/Home.page b/examples/Tutorial2/src/tutorial/pagelinking/Home.page
deleted file mode 100644
index fd5adb4..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/Home.page
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="net.sf.tapestry.html.BasePage">
-	<component id="page2" type="PageLink">
-		<static-binding name="page">SecondPage</static-binding>
-	</component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/PageLinking.application b/examples/Tutorial2/src/tutorial/pagelinking/PageLinking.application
deleted file mode 100644
index 6ec1cd8..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/PageLinking.application
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: HelloWorld.application,v 1.9 2002/08/09 11:54:40 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<application name="Page Linking Tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
-  <page name="Home" specification-path="/tutorial/pagelinking/Home.page"/>
-  <page name="SecondPage" specification-path="/tutorial/pagelinking/SecondPage.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/PageLinkingServlet.java b/examples/Tutorial2/src/tutorial/pagelinking/PageLinkingServlet.java
deleted file mode 100644
index b4bbe9e..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/PageLinkingServlet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagelinking;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id$
- *  @author Howard Lewis Ship
- *
- **/
-
-public class PageLinkingServlet extends ApplicationServlet
-{
-    protected String getApplicationSpecificationPath()
-    {
-        return "/tutorial/pagelinking/PageLinking.application";
-    }
-
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.html b/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.html
deleted file mode 100644
index 3de573a..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Page Linking Tutorial (page 2)</title>
-</head>
-<body>
-<h1>Page Two</h1>
-
-<center>
-<table border=0>
-    <tr><th>Well, here we are! Let have some Action!</th></tr>
-    <tr><td><hr></td></tr>
-    <tr><td>Click <span jwcid="homePage">here</span> to go back to the home page.</td></tr>
-    <tr><td>Click <span jwcid="linkListener">here</span> to invoke a <b>DirectLink</b> listener</td></tr>
-    <form jwcid="form">
-        <tr><td>Click <span jwcid="buttonListener">here</span> to invoke a <b>Submit</b> listener</td></tr>
-    </form>
-
-    <!-- This part shows the 'result' of the listener -->
-    <tr><td><hr></td></tr>
-    <tr><td><span jwcid="result"/></td></tr>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.java b/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.java
deleted file mode 100644
index 0535772..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.java
+++ /dev/null
@@ -1,45 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagelinking;
-
-import net.sf.tapestry.html.BasePage;
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.RequestCycleException;
-
-/**
- * Provides the listeners and a place to store a simple 'result' string
- * that can be shown back to the user.
- */
-public class SecondPage extends BasePage {
-    public void linkListener(IRequestCycle cycle) throws RequestCycleException {
-        result = "The link listener was called - which is a good thing.";
-    }
-
-    public void buttonListener(IRequestCycle cycle) throws RequestCycleException {
-        result = "The submit listener was called - which is also a good thing.";
-    }
-
-    public String getResult() {
-        return result;
-    }
-
-    /** Clean up */
-    public void detach() {
-        super.detach();
-        result = null;
-    }
-
-    private String result;
-}
diff --git a/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.page b/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.page
deleted file mode 100644
index baa94ea..0000000
--- a/examples/Tutorial2/src/tutorial/pagelinking/SecondPage.page
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN"
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.pagelinking.SecondPage">
-	<component id="homePage" type="PageLink">
-		<static-binding name="page">Home</static-binding>
-	</component>
-
-    <component id="form" type="Form">
-        <binding name="stateful" expression="false"/>
-    </component>
-
-    <component id="result" type="InsertText">
-        <binding name="value" expression="result"/>
-    </component>
-
-    <component id="linkListener" type="DirectLink">
-        <binding name="listener" expression="listeners.linkListener"/>
-        <binding name="stateful" expression="false"/>
-    </component>
-
-    <component id="buttonListener" type="Submit">
-        <binding name="listener" expression="listeners.buttonListener"/>
-    </component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/Home.html b/examples/Tutorial2/src/tutorial/pagetypes/Home.html
deleted file mode 100644
index 41cbc8a..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/Home.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>PageTypes Example</title>
-</head>
-<body>
-
-<h1>PageTypes Example</h1>
-The links below allow you to force the exceptions that will show you the standard
-pages in Tapestry. Right now, you're looking at a <b>Home<b/> page, with a few
-<b>DirectLink</b> components on it.
-
-<ol>
-    <li><a jwcid="staleSession">StaleSession</a>
-    <li><a jwcid="staleLink">StateLink</a>
-    <li><a jwcid="exceptionLink">Exception</a>
-    <li><a jwcid="niceException">Friendly exception page</a>
-</ol>
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/Home.java b/examples/Tutorial2/src/tutorial/pagetypes/Home.java
deleted file mode 100644
index c912559..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/Home.java
+++ /dev/null
@@ -1,58 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagetypes;
-
-import net.sf.tapestry.html.BasePage;
-import net.sf.tapestry.IRequestCycle;
-import net.sf.tapestry.RequestCycleException;
-import net.sf.tapestry.StaleSessionException;
-import net.sf.tapestry.StaleLinkException;
-import org.apache.log4j.Logger;
-
-import javax.swing.*;
-
-/**
- *  @version $Id: Home.java,v 1.3 2003/01/13 03:33:40 hlship Exp $
- *  @author Neil Clayton
- *
- **/
-public class Home extends BasePage {
-    public void niceExceptionPage(IRequestCycle cycle) throws RequestCycleException {
-        // This will cause the NewException page to be shown, due to the overrides
-        // we have placed in the Engine used in this example
-        throw new RequestCycleException("This exception is intentionally thrown by the link handler",
-                this,
-                new MyException("this is an intentional runtime exception"));
-    }
-
-    public void forceStaleSession(IRequestCycle cycle) throws RequestCycleException {
-        log.warn("throwing stale session exception");
-        throw new StaleSessionException("The session has expired", getPage());
-    }
-
-    public void forceStaleLink(IRequestCycle cycle) throws RequestCycleException {
-        log.warn("throwing stale link exception");
-        throw new StaleLinkException("This link is STALE!", this);
-    }
-
-    public void forceException(IRequestCycle cycle) throws RequestCycleException {
-        log.warn("throwing some other exception");
-        throw new RequestCycleException("This exception is intentionally thrown by the link handler",
-                this,
-                new RuntimeException("this is an intentional runtime exception"));
-    }
-
-    private static final Logger log = Logger.getLogger(Home.class);
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/Home.page b/examples/Tutorial2/src/tutorial/pagetypes/Home.page
deleted file mode 100644
index f4cd153..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/Home.page
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.pagetypes.Home">
-    <component id="staleSession" type="DirectLink">
-        <binding name="listener" expression="listeners.forceStaleSession"/>
-        <binding name="stateful" expression="false"/>
-    </component>
-    <component id="staleLink" type="DirectLink">
-        <binding name="listener" expression="listeners.forceStaleLink"/>
-        <binding name="stateful" expression="false"/>
-    </component>
-    <component id="exceptionLink" type="DirectLink">
-        <binding name="listener" expression="listeners.forceException"/>
-        <binding name="stateful" expression="false"/>
-    </component>
-    <component id="niceException" type="DirectLink">
-        <binding name="listener" expression="listeners.niceExceptionPage"/>
-        <binding name="stateful" expression="false"/>
-    </component>
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/MyException.java b/examples/Tutorial2/src/tutorial/pagetypes/MyException.java
deleted file mode 100644
index 35b33ff..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/MyException.java
+++ /dev/null
@@ -1,24 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagetypes;
-
-/**
- * This is a sample exception class
- */
-public class MyException extends Exception {
-    public MyException(String message) {
-        super(message);
-    }
-}
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/NewException.html b/examples/Tutorial2/src/tutorial/pagetypes/NewException.html
deleted file mode 100644
index 7ff202d..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/NewException.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<html>
-<head>
-    <title>An Error has occurred with the Application</title>
-</head>
-
-<body>
-<center>
-    <h1>We have 'issues' ... </h1>
-
-    <h2><font color="red"><span jwcid="errorMessage"/></font></h2>
-
-    <p>
-    We don't think we'll be doing that any time soon, since our system
-    appears to have some kind of problem.  We would appreciate it if you
-    could <a href="mailto:errors@neverneverland.net">email us</a> a copy
-    of this page.
-    </p>
-</center>
-</body>
-
-</html>
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/NewException.java b/examples/Tutorial2/src/tutorial/pagetypes/NewException.java
deleted file mode 100644
index b4ffc76..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/NewException.java
+++ /dev/null
@@ -1,39 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagetypes;
-
-import net.sf.tapestry.IBinding;
-import net.sf.tapestry.html.BasePage;
-
-public class NewException extends BasePage {
-    public Throwable getException() {
-        return exception;
-    }
-
-    public void setException(Throwable exception) {
-        this.exception = exception;
-    }
-
-    public IBinding getExceptionBinding() {
-        return exceptionBinding;
-    }
-
-    public void setExceptionBinding(IBinding exceptionBinding) {
-        this.exceptionBinding = exceptionBinding;
-    }
-
-    private IBinding exceptionBinding;
-    private Throwable exception;
-}
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/NewException.page b/examples/Tutorial2/src/tutorial/pagetypes/NewException.page
deleted file mode 100644
index 2acfeda..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/NewException.page
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.page,v 1.6 2002/05/13 14:00:37 scornflake Exp $ -->
-<!DOCTYPE page-specification PUBLIC
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN"
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<page-specification class="tutorial.pagetypes.NewException">
-    <component id="errorMessage" type="InsertText">
-        <binding name="value" expression="exception.message"/>
-    </component>
-</page-specification>
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/PageTypes.application b/examples/Tutorial2/src/tutorial/pagetypes/PageTypes.application
deleted file mode 100644
index eec4058..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/PageTypes.application
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: HelloWorld.application,v 1.9 2002/08/09 11:54:40 hship Exp $ -->
-<!DOCTYPE application PUBLIC
-	"-//Howard Lewis Ship//Tapestry Specification 1.3//EN"
-	"http://tapestry.sf.net/dtd/Tapestry_1_3.dtd">
-
-<application name="PageTypes Demo" engine-class="tutorial.pagetypes.PageTypesEngine">
-    <page name="Home" specification-path="/tutorial/pagetypes/Home.page"/>
-    <page name="NewException" specification-path="/tutorial/pagetypes/NewException.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/PageTypesEngine.java b/examples/Tutorial2/src/tutorial/pagetypes/PageTypesEngine.java
deleted file mode 100644
index a59a530..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/PageTypesEngine.java
+++ /dev/null
@@ -1,64 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagetypes;
-
-import net.sf.tapestry.*;
-import net.sf.tapestry.engine.SimpleEngine;
-import net.sf.tapestry.util.prop.OgnlUtils;
-
-import javax.servlet.ServletException;
-
-/**
- * Provides the ability to handle an exception in a different manner
- */
-public class PageTypesEngine extends SimpleEngine {
-    private static final String NEW_EXCEPTION_PAGE = "NewException";
-
-    protected void activateExceptionPage(IRequestCycle cycle, ResponseOutputStream output, Throwable cause)
-            throws ServletException {
-        RequestCycleException cycleE = (RequestCycleException)cause;
-        if (cycleE.getRootCause() instanceof MyException) {
-            handleNewException(cycle, output, cycleE.getRootCause());
-        } else {
-            super.activateExceptionPage(cycle, output, cause);
-        }
-    }
-
-    /**
-     * This standard exception handling block is what is found in
-     * the SimpleEngine. This is not normal. Usually, if you are overriding
-     * the Exception pae, you just have to provide a new page - not override the engine
-     * to do it. This is done only because I want to show both the standard and new
-     * exception pages in the same application.
-     */
-    protected void handleNewException(IRequestCycle cycle, ResponseOutputStream output, Throwable cause) throws ServletException {
-        try {
-            IPage exceptionPage = cycle.getPage(NEW_EXCEPTION_PAGE);
-            OgnlUtils.set("exception", getResourceResolver(), exceptionPage, cause);
-            cycle.setPage(exceptionPage);
-            renderResponse(cycle, output);
-        } catch (Throwable ex) {
-            // Worst case scenario.  The exception page itself is broken, leaving
-            // us with no option but to write the cause to the output.
-            reportException(Tapestry.getString("AbstractEngine.unable-to-process-client-request"), cause);
-
-            // Also, write the exception thrown when redendering the exception
-            // page, so that can get fixed as well.
-            reportException(Tapestry.getString("AbstractEngine.unable-to-present-exception-page"), ex);
-            // And throw the exception.
-            throw new ServletException(ex.getMessage(), ex);
-        }
-    }
-}
diff --git a/examples/Tutorial2/src/tutorial/pagetypes/PageTypesServlet.java b/examples/Tutorial2/src/tutorial/pagetypes/PageTypesServlet.java
deleted file mode 100644
index 6abc861..0000000
--- a/examples/Tutorial2/src/tutorial/pagetypes/PageTypesServlet.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.pagetypes;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id: HelloWorldServlet.java,v 1.3 2003/01/13 03:33:41 hlship Exp $
- *  @author Howard Lewis Ship
- *
- **/
-
-public class PageTypesServlet extends ApplicationServlet
-{
-    protected String getApplicationSpecificationPath()
-    {
-        return "/tutorial/pagetypes/PageTypes.application";
-    }
-
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/simple/Home.html b/examples/Tutorial2/src/tutorial/simple/Home.html
deleted file mode 100644
index 00caa07..0000000
--- a/examples/Tutorial2/src/tutorial/simple/Home.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-<html>
-<head>
-	<title>Simple</title>
-</head>
-<body>
-
-This application demonstrates some dynamic behavior using Tapestry components.
-
-<p>The current date and time is: <b><span jwcid="insertDate">Current Date</span></b>
-
-<p>Click <a jwcid="refresh">here</a> to refresh.
-
-</body>
-</html>
diff --git a/examples/Tutorial2/src/tutorial/simple/Home.java b/examples/Tutorial2/src/tutorial/simple/Home.java
deleted file mode 100644
index c94f50f..0000000
--- a/examples/Tutorial2/src/tutorial/simple/Home.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.simple;
-
-import java.util.Date;
-
-import net.sf.tapestry.html.BasePage;
-
-/**
- *  @version $Id: Home.java,v 1.8 2002/05/04 12:43:31 hship Exp $
- *  @author Howard Lewis Ship
- *
- **/
-
-public class Home extends BasePage
-{
-	public Date getCurrentDate()
-	{
-		return new Date();
-	}
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/src/tutorial/simple/Home.page b/examples/Tutorial2/src/tutorial/simple/Home.page
deleted file mode 100644
index 96a29aa..0000000
--- a/examples/Tutorial2/src/tutorial/simple/Home.page
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Home.jwc,v 1.4 2001/05/22 15:24:16 hship Exp $ -->
-<!DOCTYPE page-specification PUBLIC "-//Howard Lewis Ship//Tapestry Specification 1.3//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_2.dtd">
-	
-<page-specification class="tutorial.simple.Home">
-  
-  <component id="insertDate" type="Insert">
-    <binding name="value" expression="currentDate"/>
-  </component>
-  
-  <component id="refresh" type="PageLink">
-    <static-binding name="page">Home</static-binding>
-  </component>
-  
-</page-specification>
diff --git a/examples/Tutorial2/src/tutorial/simple/Simple.application b/examples/Tutorial2/src/tutorial/simple/Simple.application
deleted file mode 100644
index 3a719c2..0000000
--- a/examples/Tutorial2/src/tutorial/simple/Simple.application
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-    Copyright 2004 The Apache Software Foundation
-  
-   Licensed 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.
--->
-<!-- $Id: Simple.application,v 1.8 2002/07/27 15:11:59 hship Exp $ -->
-<!DOCTYPE application PUBLIC 
-	"-//Howard Lewis Ship//Tapestry Specification 1.2//EN" 
-	"http://tapestry.sf.net/dtd/Tapestry_1_2.dtd">
-	
-<application name="Simple Tutorial" engine-class="net.sf.tapestry.engine.SimpleEngine">
-  <page name="Home" specification-path="/tutorial/simple/Home.page"/>
-</application>
diff --git a/examples/Tutorial2/src/tutorial/simple/SimpleServlet.java b/examples/Tutorial2/src/tutorial/simple/SimpleServlet.java
deleted file mode 100644
index ceedd8d..0000000
--- a/examples/Tutorial2/src/tutorial/simple/SimpleServlet.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2004 The Apache Software Foundation
-//
-// Licensed 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.
-
-package tutorial.simple;
-
-import net.sf.tapestry.ApplicationServlet;
-
-/**
- *  @version $Id: SimpleServlet.java,v 1.9 2002/05/04 12:43:31 hship Exp $
- *  @author Howard Lewis Ship
- *
- */
-
-public class SimpleServlet extends ApplicationServlet
-{
-	protected String getApplicationSpecificationPath()
-	{
-		return "/tutorial/simple/Simple.application";
-	}
-}
\ No newline at end of file
diff --git a/examples/Tutorial2/web/WEB-INF/web.xml b/examples/Tutorial2/web/WEB-INF/web.xml
deleted file mode 100644
index ee1052f..0000000
--- a/examples/Tutorial2/web/WEB-INF/web.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
- "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
-<web-app>
-    <display-name>Tapestry Tutorial</display-name>
-
-    <!-- A typical Tapestry WAR will have exactly one servlet.  The Tutorial is actually
-         several seperate Tapestry application bundled together.  The framework allows for
-         this (you'll notice that each object stored in the ServletContext has a unique
-         name to avoid collisions between sibling Tapestry applications.
-
-         It's a good idea to load the servlet on startup; this helps get the large
-         number of Tapestry classes loaded.
-
-         -->
-
-    <servlet>
-        <servlet-name>hello</servlet-name>
-        <servlet-class>tutorial.hello.HelloWorldServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet>
-        <servlet-name>pagelinking</servlet-name>
-        <servlet-class>tutorial.pagelinking.PageLinkingServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet>
-        <servlet-name>forms</servlet-name>
-        <servlet-class>tutorial.forms.FormsServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet>
-        <servlet-name>events</servlet-name>
-        <servlet-class>tutorial.events.EventHandlingServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet>
-        <servlet-name>components</servlet-name>
-        <servlet-class>tutorial.components.ComponentsServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet>
-        <servlet-name>pagetypes</servlet-name>
-        <servlet-class>tutorial.pagetypes.PageTypesServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet>
-        <servlet-name>assets</servlet-name>
-        <servlet-class>tutorial.assets.AssetsServlet</servlet-class>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-    <servlet-mapping>
-        <servlet-name>hello</servlet-name>
-        <url-pattern>/hello</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>pagelinking</servlet-name>
-        <url-pattern>/pagelinking</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>forms</servlet-name>
-        <url-pattern>/forms</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>events</servlet-name>
-        <url-pattern>/events</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>components</servlet-name>
-        <url-pattern>/components</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>pagetypes</servlet-name>
-        <url-pattern>/pagetypes</url-pattern>
-    </servlet-mapping>
-
-    <servlet-mapping>
-        <servlet-name>assets</servlet-name>
-        <url-pattern>/assets</url-pattern>
-    </servlet-mapping>
-
-    <session-config>
-        <session-timeout>15</session-timeout>
-    </session-config>
-
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-    </welcome-file-list>
-</web-app>
diff --git a/examples/Tutorial2/web/images/poweredby.jpg b/examples/Tutorial2/web/images/poweredby.jpg
deleted file mode 100644
index 7d2d2d9..0000000
--- a/examples/Tutorial2/web/images/poweredby.jpg
+++ /dev/null
Binary files differ
diff --git a/examples/Tutorial2/web/index.html b/examples/Tutorial2/web/index.html
deleted file mode 100644
index 617b791..0000000
--- a/examples/Tutorial2/web/index.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<html>
-    <head>
-      <title>Tapestry Tutorial Web Application</title>
-    </head>
-
-    <body bgcolor="#839cd1">
-        <table border=0 class=""><tr><td>
-        <table border=0 width="90%" align="center">
-            <tr>
-                <th align="center"><img border=0 src="images/poweredby.jpg" alt="Powered By Tapestry"/></th>
-                <th align="center" nowrap><h1>Tapestry Tutorial Application</h1></th>
-            </tr>
-
-            <tr>
-                <td nowrap><a href="hello">Hello World</a></td>
-                <td>The simplest of applications</td>
-            </tr>
-
-            <tr bgcolor="silver">
-                <td nowrap><a href="pagelinking">Simple Page Linking</a></td>
-                <td>An example of linking pages together using the <b>PageLink</b> component</td>
-            </tr>
-
-            <tr>
-                <td nowrap><a href="forms">Forms Examples</a></td>
-                <td>Some more complex examples showing the use of text fields,
-                drop down boxes, form validation and actions.</td>
-            </tr>
-
-            <tr bgcolor="silver">
-                <td nowrap><a href="events">Event Handling Examples</a></td>
-                <td>Further example on the handling of actions - either link based
-                or form based</td>
-            </tr>
-
-            <tr>
-                <td nowrap><a href="components">Creating a Comonent</a></td>
-                <td>How to create components, with properties, that can
-                be reused across pages. This section also introduces
-                property bindings.</td>
-            </tr>
-
-            <tr bgcolor="silver">
-                <td nowrap><a href="pagetypes">Explore different page types</a></td>
-                <td>Describes the various types of special pages in Tapestry,
-                and provides an example of how to override the standard
-                Exception page.</td>
-            </tr>
-
-            <tr>
-                <td nowrap><a href="assets">Simple Page, with an Asset (heading)</a></td>
-                <td>Very simple example of Assets</td>
-            </tr>
-         </table>
-         </td></tr></table>
-      </ul>
-    </body>
-</html>
\ No newline at end of file
diff --git a/framework/src/org/apache/tapestry/enhance/DefaultComponentClassEnhancer.java b/framework/src/org/apache/tapestry/enhance/DefaultComponentClassEnhancer.java
index 0076f4f..46c38df 100644
--- a/framework/src/org/apache/tapestry/enhance/DefaultComponentClassEnhancer.java
+++ b/framework/src/org/apache/tapestry/enhance/DefaultComponentClassEnhancer.java
@@ -85,22 +85,18 @@
 
     public Class getEnhancedClass(IComponentSpecification specification, String className)
     {
-        Class result = getCachedClass(specification);
-
-        if (result == null)
-        {
-            synchronized (this)
+            synchronized (specification)
             {
-                result = getCachedClass(specification);
+                Class result = getCachedClass(specification);
+
                 if (result == null)
                 {
                     result = constructComponentClass(specification, className);
                     storeCachedClass(specification, result);
                 }
-            }
-        }
 
-        return result;
+                return result;
+            }
     }
 
     protected void storeCachedClass(IComponentSpecification specification, Class cachedClass)
diff --git a/framework/src/org/apache/tapestry/enhance/javassist/EnhancedClassFactory.java b/framework/src/org/apache/tapestry/enhance/javassist/EnhancedClassFactory.java
index dd55939..d858219 100644
--- a/framework/src/org/apache/tapestry/enhance/javassist/EnhancedClassFactory.java
+++ b/framework/src/org/apache/tapestry/enhance/javassist/EnhancedClassFactory.java
@@ -101,12 +101,9 @@
 
     public CtClass getObjectType(String type)
     {
-        CtClass result = getClassMapping().getType(type);
 
-        if (result == null)
-        {
             synchronized (this) {
-                result = getClassMapping().getType(type);
+                CtClass result = getClassMapping().getType(type);
 
                 if (result == null)
                 {
@@ -120,10 +117,9 @@
                         throw new CodeGenerationException(e);
                     }
                 }
+                return result;
             }
-        }
 
-        return result;
     }
 
 
diff --git a/framework/src/org/apache/tapestry/util/LocalizedContextResourceFinder.java b/framework/src/org/apache/tapestry/util/LocalizedContextResourceFinder.java
index 20f3c2c..ee11fbf 100644
--- a/framework/src/org/apache/tapestry/util/LocalizedContextResourceFinder.java
+++ b/framework/src/org/apache/tapestry/util/LocalizedContextResourceFinder.java
@@ -54,8 +54,16 @@
     public LocalizedResource resolve(String contextPath, Locale locale)
     {
         int dotx = contextPath.lastIndexOf('.');
-        String basePath = contextPath.substring(0, dotx);
-        String suffix = contextPath.substring(dotx);
+        String basePath = null;
+        String suffix = null;
+        // This handles assets without extensions - still allows them to be localized.
+        if (dotx > -1) {
+          basePath = contextPath.substring(0, dotx);
+          suffix = contextPath.substring(dotx);
+        } else {
+          basePath = contextPath;
+          suffix = "";
+        }
 
         LocalizedNameGenerator generator = new LocalizedNameGenerator(basePath, locale, suffix);
 
diff --git a/status.xml b/status.xml
index 6dc2a78..d3fa527 100644
--- a/status.xml
+++ b/status.xml
@@ -11,6 +11,7 @@
     <person name="Tsvetelin Saykov" id="TS"/>
     <person name="Neil Clayton" id="NC"/>
     <person name="Paul Ferraro" id="PF"/>
+    <person name="Jesse Kuhnert" id="JK" />
     <!-- Retired -->
     <person name="Malcom Edgar" id="ME"/>
     <!-- Add more people here -->
@@ -126,6 +127,21 @@
   <changes>
   	<release version="3.0.4" date="unreleased">
       <action type="fix" dev="GL" fixes-bug="TAPESTRY-431"> Fixed TemplateParser throws an exception and stops parsing when duplicate attributes are found in a tag. </action>
+      <action type="fix" dev="JK" fixes-bug="TAPESTRY-877" due-to="Brian K. Wallace">
+      	Javassist url was incorrect.
+      </action>
+      <action type="remove" dev="JK" fixes-bug="TAPESTRY-878" due-to="Brian K. Wallace" >
+      	Removed old tutorial example.
+      </action>
+      <action type="fix" dev="JK" fixes-bug="TAPESTRY-806" due-to="Nick Westgate" >
+      	Double checked locking bug prevents use of multi processor environments (efficiently).
+      </action>
+      <action type="fix" dev="JK" fixes-bug="TAPESTRY-241" due-to="Kurtis Williams" >
+      	binding for convertor needed to be inherited-binding
+      </action>
+      <action type="fix" dev="JK" fixes-bug="TAPESTRY-193" due-to="Brian K. Wallace" >
+      	AssetService not resolving file prefixes correctly.
+      </action>
     </release>
     <release version="3.0.3" date="Mar 26 2005">
       <action type="fix" dev="PF" fixes-bug="TAPESTRY-278"> Fixes security flaw in asset service. </action>