diff --git a/trunk/turbine-webapp-4.0/pom.xml b/trunk/turbine-webapp-4.0/pom.xml
index 1196043..448528e 100644
--- a/trunk/turbine-webapp-4.0/pom.xml
+++ b/trunk/turbine-webapp-4.0/pom.xml
@@ -30,8 +30,8 @@
   <version>1.0.2-SNAPSHOT</version>
   <packaging>maven-archetype</packaging>
 
-  <name>Archetype - Turbine 4.0M2 WebApp</name>
-  <description>This archetype sets up a web application project based on Apache Turbine 4.0M2</description>
+  <name>Archetype - Turbine 4.0 WebApp</name>
+  <description>This archetype sets up a web application project based on Apache Turbine 4.0</description>
   <url>http://turbine.apache.org</url>
 
   <inceptionYear>2011</inceptionYear>
@@ -47,7 +47,7 @@
       <extension>
         <groupId>org.apache.maven.archetype</groupId>
         <artifactId>archetype-packaging</artifactId>
-        <version>2.4</version>
+        <version>3.0.1</version>
       </extension>
     </extensions>
 
@@ -55,7 +55,7 @@
       <plugins>
         <plugin>
           <artifactId>maven-archetype-plugin</artifactId>
-          <version>2.4</version>
+          <version>3.0.1</version>
         </plugin>
       </plugins>
     </pluginManagement>
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/docs/README.txt b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/docs/README.txt
index 46b5d28..c4d6ec8 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/docs/README.txt
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/docs/README.txt
@@ -26,11 +26,18 @@
 Quick Guide to using the new Turbine 4.0-M2 maven archetype 
 for skeleton application generation
 
-You should have a local database installed and configured prior to 
+First, you should have a local database installed and configured prior to 
 beginning the application setup below.
 
+As we are using MySQL bey defautlt you need to create the database in MySQL, e.g. with
 
-You can invoke the Maven archetype for turbine-webapp-4.0 from 
+ mysql -u <user> -p
+ mysql> create database helloWorld;
+ mysql> \q
+
+or other tools.
+ 
+Next, you can invoke the Maven archetype for turbine-webapp-4.0 from 
 the command line as shown below - please update values starting 
 with 'groupId' as appropriate.
 
@@ -39,59 +46,60 @@
     -DarchetypeArtifactId=turbine-webapp-4.0 \
     -DarchetypeVersion=1.0.1-SNAPSHOT \
     -DgroupId=com.mycompany.webapp \
-    -DartifactId=helloWorld \
+    -DartifactId=myhelloworld \
     -Dversion=1.0 \
     -Dturbine_app_name=HelloWorld \
     -Dturbine_database_adapter=mysql \
     -Dturbine_database_user=db_username \
     -Dturbine_database_password=db_password \
-    -Dturbine_database_name=helloWorld \
+    -Dturbine_database_name=helloworld \
     -Dturbine_database_url=jdbc:mysql://localhost:3306/ \
-    -Dgoals=generate-sources,sql:execute
+    -Dgoals=generate-sources,pre-integration-test
 
 Notes
 
-When invoking archetype:generate, you can already set mvn commands and you can then skip them later.
-Be aware, when you set both mvn commands goals (-Dgoals=generate-sources, sql:execute), 
-you have to create the database (see below) BEFORE finishing the (interactive) archetype commands.
+When invoking archetype:generate like above, you already have set some mvn commands and you can then skip them later.
+
+Be aware, when you set both mvn commands goals (which are maven phases actually), i.e  with
+
+-Dgoals=generate-sources, pre-integration-test 
+
+you have to create the database (see above) before finishing the (interactive) archetype commands. 
+Otherwise you could catch up doing this later and after that is done calling the phases afterwards as mentioned below.
 
 Note that the database URL (turbine_database_url) 
 will be appended with your database name
 in the final pom.xml, so you do not need to specify that in 
 the configuration.
 
-Next, you need to create the database in MySQL
+Next, change into the newly generated project folder, in our case
 
- mysql -u <user> -p
- mysql> create database helloWorld;
- mysql> \q
+cd myhelloworld
 
-
-cd helloWorld
-
-# if not already done 
+Skip next two steps, if the build was successfull
 mvn generate-sources  ## This will generate the OM layer and SQL 
 					  ## code for creating the corresponding
 					  ## database tables
 	
-# if not already done   
-mvn sql:execute       ## This executes the SQL code to create 
+mvn integration-test      ## This executes the SQL code to create 
 					  ## the application schema defined 
 					  ## in src/main/torque-schema
 
 You should now check the database tables and if some data is missing
-insert the sample data file provided 
-as Torque 4.0 has disabled the datasql task.
+insert the sample data file in sample-mysql-data (Torque 4.0 has disabled the datasql task).
 
+Last step on the command line is run the server by invoking 
 mvn jetty:run         ## Now you can launch your new Turbine application
 
+Find the Logs in src/main/webapp/logs and
+
 Open a web browser to http://localhost:8081/app
 
 Login should work with user admin/password or user/password.
 
 Background:
 
-By default Intake is used as an validation mechanism for authentication. You can change to the default login by settings
+By default Intake is used as an validation mechanism for authentication. You can change to the default login by setting
 
 action.login=LoginUser in TurbineResources.properties and changing Login.vm appropriately (commented form)
 
@@ -101,7 +109,7 @@
 mvn eclipse:eclipse
 
 Once imported, update your project to be managed by Maven 
-  -> Right click on the proejct name
+  -> Right click on the project name
   -> Configure 
   -> Convert to Maven project
 
@@ -109,6 +117,12 @@
 configuration "Run On Server" if you have a container configured with
 your eclipse environment.
 
+You even could debug the app by setting the environment variable to something like this
+
+set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
+
+before running the jetty server.
+
 Starting developing
 
 Be aware of settings and some smaller restrictions, which mostly will be fixed in the upcoming releases.
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/pom.xml b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/pom.xml
index 1c6e32c..1ddf81d 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/pom.xml
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/pom.xml
@@ -160,22 +160,10 @@
           <onError>continue</onError>
           <autocommit>true</autocommit>
           <orderFile>descending</orderFile>
-          <!-- this is mysql specific -->
-          <fileset>
-              <basedir>${project.build.directory}/generated-sql/torque/mysql</basedir>
-              <!-- basedir>${basedir}/target/generated-sql</basedir -->
-              <includes>
-                <include>*.sql</include>
-              </includes>
-           </fileset>
-           <srcFiles>
-              <srcFile>${basedir}/docs/sample-mysql-data/_application-data.sql</srcFile>
-              <srcFile>${basedir}/docs/sample-mysql-data/_turbine-security-data.sql</srcFile>
-           </srcFiles>
         </configuration>
         
         <!-- update with your database driver dependency -->
-        
+        <!-- this is mysql specific -->
         <dependencies>
           <dependency>
             <artifactId>mysql-connector-java</artifactId>
@@ -183,6 +171,40 @@
             <version>5.1.40</version>
           </dependency>
         </dependencies>
+        <!-- this is mysql specific -->
+        <executions>
+          <execution>
+              <id>create-db</id>
+              <phase>pre-integration-test</phase>
+              <goals>
+                <goal>execute</goal>
+              </goals>
+              <configuration>
+                <orderFile>ascending</orderFile>
+                <fileset>
+                  <basedir>${project.build.directory}/generated-sql/torque/mysql</basedir>
+                  <!-- basedir>${basedir}/target/generated-sql</basedir -->
+                  <includes>
+                    <include>*.sql</include>
+                  </includes>
+                </fileset>
+              </configuration>
+            </execution>
+            <execution>
+              <id>create-data</id>
+              <phase>pre-integration-test</phase>
+              <goals>
+                <goal>execute</goal>
+              </goals>
+              <configuration>
+                <orderFile>ascending</orderFile>
+                <srcFiles>
+                  <srcFile>${project.basedir}/docs/sample-mysql-data/_application-data.sql</srcFile>
+                  <srcFile>${project.basedir}/docs/sample-mysql-data/_turbine-security-data.sql</srcFile>
+                </srcFiles>              
+              </configuration>
+            </execution>
+        </executions>
       </plugin>
 
             <!-- jetty:run checks deployed war http://localhost:8081/app/ 
@@ -238,7 +260,7 @@
         <dependency>
             <groupId>org.apache.turbine</groupId>
             <artifactId>turbine</artifactId>
-            <version>4.0-M2</version>
+            <version>4.0-SNAPSHOT</version>
         </dependency>
         <!-- yaafi is optional. NOTICE: 1.0.7 has group org.apache.turbine not org.apache.fulcrum  -->
         <dependency>
@@ -276,7 +298,7 @@
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
-            <version>4.11</version>
+            <version>4.12</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
index f236106..f4413a5 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineGroup.java
@@ -16,6 +16,7 @@
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
+* #set( $H = '#' )
 *#
 import java.sql.Connection;
 import java.util.HashSet;
@@ -64,7 +65,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#getDatabaseName()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HgetDatabaseName()
      */
     @Override
 	public String getDatabaseName()
@@ -73,7 +74,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HretrieveAttachedObjects(java.sql.Connection)
      */
     @Override
 	public void retrieveAttachedObjects(Connection con) throws TorqueException
@@ -95,7 +96,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#update(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hupdate(java.sql.Connection)
      */
     @Override
 	public void update(Connection con) throws TorqueException
@@ -130,7 +131,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#delete()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hdelete()
      */
     @Override
 	public void delete() throws TorqueException
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbinePermission.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbinePermission.java
index 0a0a032..5648f1f 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbinePermission.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbinePermission.java
@@ -35,7 +35,7 @@
 import ${package}.om.TurbineRolePermissionPeer;
 /**
  * This abstract class provides the SecurityInterface to the managers.
- *
+ * #set( $H = '#' )
  * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
  * @version $Id:$
  */
@@ -68,7 +68,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission#addRole(org.apache.fulcrum.security.entity.Role)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission$HaddRole(org.apache.fulcrum.security.entity.Role)
      */
     @Override
 	public void addRole(Role role)
@@ -77,7 +77,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission#getRoles()
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission$HgetRoles()
      */
     @Override
 	public RoleSet getRoles()
@@ -95,7 +95,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission#getRolesAsSet()
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission$HgetRolesAsSet()
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -105,7 +105,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission#removeRole(org.apache.fulcrum.security.entity.Role)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission$HremoveRole(org.apache.fulcrum.security.entity.Role)
      */
     @Override
 	public void removeRole(Role role)
@@ -114,7 +114,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission#setRoles(org.apache.fulcrum.security.util.RoleSet)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission$HsetRoles(org.apache.fulcrum.security.util.RoleSet)
      */
     @Override
 	public void setRoles(RoleSet roleSet)
@@ -130,7 +130,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission#setRolesAsSet(java.util.Set)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbinePermission$HsetRolesAsSet(java.util.Set)
      */
     @Override
 	public <T extends Role> void setRolesAsSet(Set<T> roles)
@@ -139,7 +139,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#getDatabaseName()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HgetDatabaseName()
      */
     @Override
 	public String getDatabaseName()
@@ -148,7 +148,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HretrieveAttachedObjects(java.sql.Connection)
      */
     @Override
 	public void retrieveAttachedObjects(Connection con) throws TorqueException
@@ -164,7 +164,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#update(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hupdate(java.sql.Connection)
      */
     @Override
 	public void update(Connection con) throws TorqueException
@@ -197,7 +197,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#delete()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hdelete()
      */
     @Override
 	public void delete() throws TorqueException
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineRole.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineRole.java
index 7f04c42..cc09076 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineRole.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineRole.java
@@ -39,7 +39,7 @@
 import ${package}.om.TurbineUserGroupRolePeer;
 /**
  * This abstract class provides the SecurityInterface to the managers.
- *
+ * #set( $H = '#' )
  * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
  * @version $Id:$
  */
@@ -91,7 +91,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#addPermission(org.apache.fulcrum.security.entity.Permission)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole$HaddPermission(org.apache.fulcrum.security.entity.Permission)
      */
     @Override
 	public void addPermission(Permission permission)
@@ -100,7 +100,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#getPermissions()
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole$HgetPermissions()
      */
     @Override
 	public PermissionSet getPermissions()
@@ -118,7 +118,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#getPermissionsAsSet()
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole$HgetPermissionsAsSet()
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -128,7 +128,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#removePermission(org.apache.fulcrum.security.entity.Permission)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole$HremovePermission(org.apache.fulcrum.security.entity.Permission)
      */
     @Override
 	public void removePermission(Permission permission)
@@ -137,7 +137,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#setPermissions(org.apache.fulcrum.security.util.PermissionSet)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole$HsetPermissions(org.apache.fulcrum.security.util.PermissionSet)
      */
     @Override
 	public void setPermissions(PermissionSet permissionSet)
@@ -153,7 +153,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole#setPermissionsAsSet(java.util.Set)
+     * @see org.apache.fulcrum.security.model.turbine.entity.TurbineRole$HsetPermissionsAsSet(java.util.Set)
      */
     @Override
 	public <T extends Permission> void setPermissionsAsSet(Set<T> permissions)
@@ -162,7 +162,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#getDatabaseName()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HgetDatabaseName()
      */
     @Override
 	public String getDatabaseName()
@@ -171,7 +171,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HretrieveAttachedObjects(java.sql.Connection)
      */
     @Override
 	public void retrieveAttachedObjects(Connection con) throws TorqueException
@@ -202,7 +202,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#update(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hupdate(java.sql.Connection)
      */
     @Override
 	public void update(Connection con) throws TorqueException
@@ -254,7 +254,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#delete()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hdelete()
      */
     @Override
 	public void delete() throws TorqueException
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineUser.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineUser.java
index b080de1..c722341 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineUser.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueAbstractTurbineUser.java
@@ -33,7 +33,7 @@
 import org.apache.torque.om.SimpleKey;
 /**
  * This abstract class provides the SecurityInterface to the managers.
- *
+ * #set( $H = '#' )
  * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
  * @version $Id:$
  */
@@ -63,7 +63,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#getDatabaseName()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HgetDatabaseName()
      */
     @Override
 	public String getDatabaseName()
@@ -72,7 +72,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HretrieveAttachedObjects(java.sql.Connection)
      */
     @Override
 	public void retrieveAttachedObjects(Connection con) throws TorqueException
@@ -94,7 +94,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#update(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hupdate(java.sql.Connection)
      */
     @Override
 	public void update(Connection con) throws TorqueException
@@ -129,7 +129,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#delete()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hdelete()
      */
     @Override
 	public void delete() throws TorqueException
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
index 1826e0d..e07fbc0 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineGroupManagerImpl.java
@@ -35,7 +35,7 @@
 import ${package}.om.TurbineGroupPeer;
 /**
  * This implementation persists to a database via Torque.
- *
+ * #set( $H = '#' )
  * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
  * @version $Id:$
  */
@@ -44,7 +44,7 @@
     
     PeerManager peerManager;
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractGroupManager#doSelectAllGroups(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractGroupManager$HdoSelectAllGroups(java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -69,7 +69,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractGroupManager#doSelectById(java.lang.Integer, java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractGroupManager$HdoSelectById(java.lang.Integer, java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -91,7 +91,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractGroupManager#doSelectByName(java.lang.String, java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractGroupManager$HdoSelectByName(java.lang.String, java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
index 80816f9..137d1f1 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineRoleManagerImpl.java
@@ -35,7 +35,7 @@
 import ${package}.om.TurbineRolePeer;
 /**
  * This implementation persists to a database via Torque.
- *
+ * #set( $H = '#' )
  * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
  * @version $Id:$
  */
@@ -44,7 +44,7 @@
     PeerManager peerManager;
     
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectAllRoles(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager$HdoSelectAllRoles(java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -67,7 +67,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectById(java.lang.Integer, java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager$HdoSelectById(java.lang.Integer, java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -88,7 +88,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager#doSelectByName(java.lang.String, java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractRoleManager$HdoSelectByName(java.lang.String, java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
index 7b42d23..36e567c 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/fulcrum/security/torque/turbine/TorqueTurbineUserManagerImpl.java
@@ -42,8 +42,7 @@
 
 /**
  * This implementation persists to a database via Torque.
- * 
- *
+ * #set( $H = '#' )
  * @author <a href="mailto:tv@apache.org">Thomas Vandahl</a>
  * @version $Id$
  */
@@ -53,7 +52,7 @@
     private static final String ANON = "anon";
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractUserManager#doSelectAllUsers(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractUserManager$HdoSelectAllUsers(java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -76,7 +75,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractUserManager#doSelectById(java.lang.Integer, java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractUserManager$HdoSelectById(java.lang.Integer, java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
@@ -97,7 +96,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractUserManager#doSelectByName(java.lang.String, java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractUserManager$HdoSelectByName(java.lang.String, java.sql.Connection)
      */
     @Override
 	@SuppressWarnings("unchecked")
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/modules/actions/LoginUserIntake.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/modules/actions/LoginUserIntake.java
index 272d47b..4c739a3 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/modules/actions/LoginUserIntake.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/modules/actions/LoginUserIntake.java
@@ -24,11 +24,13 @@
 import org.apache.commons.lang.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.fulcrum.pool.PoolService;
 import org.apache.fulcrum.security.util.DataBackendException;
 import org.apache.fulcrum.security.util.FulcrumSecurityException;
 import org.apache.fulcrum.security.util.UnknownEntityException;
 import org.apache.fulcrum.intake.model.Group;
 import org.apache.fulcrum.intake.IntakeException;
+import org.apache.turbine.services.TurbineServices;
 import org.apache.turbine.services.intake.IntakeTool;
 import org.apache.turbine.TurbineConstants;
 import org.apache.turbine.annotation.TurbineConfiguration;
@@ -82,8 +84,11 @@
         	
        try
         {
-          // Get intake group
-          IntakeTool intake =  new IntakeTool();//(IntakeTool)context.get("intake");
+          // Get intake group          
+    	    // context only available after ExecutePageValve, could not invoke (IntakeTool)context.get("intake") using pook service instead
+          PoolService poolService =  (PoolService)TurbineServices.getInstance().getService(PoolService.ROLE);
+          IntakeTool intake = (IntakeTool) poolService.getInstance(IntakeTool.class);
+          
           intake.init(data);
           Group group = intake.get("Login", IntakeTool.DEFAULT_KEY);
           String username = (String)group.get("Username").getValue();
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineGroup.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineGroup.java
index eadb5eb..51f3415 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineGroup.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineGroup.java
@@ -11,8 +11,7 @@
  * You should add additional methods to this class to meet the
  * application requirements.  This class will only be generated as
  * long as it does not already exist in the output directory.
- */
-/**
+ *
  * Added Interface and default implementations 
  * @author gk
  *
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java
index 8caa282..0d7b6f1 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/java/om/TurbineUser.java
@@ -19,8 +19,7 @@
  * You should add additional methods to this class to meet the
  * application requirements.  This class will only be generated as
  * long as it does not already exist in the output directory.
- */
-/**
+ * #set( $H = '#' )
  * Added Interface
  * @author gk
  *
@@ -80,7 +79,7 @@
     }
     
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#getDatabaseName()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HgetDatabaseName()
      */
     @Override
     public String getDatabaseName()
@@ -89,7 +88,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#retrieveAttachedObjects(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$HretrieveAttachedObjects(java.sql.Connection)
      */
     @Override
 	public void retrieveAttachedObjects(Connection con) throws TorqueException
@@ -111,7 +110,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#update(java.sql.Connection)
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hupdate(java.sql.Connection)
      * 
      * @TODO
      */
@@ -136,7 +135,7 @@
     }
 
     /**
-     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity#delete()
+     * @see org.apache.fulcrum.security.torque.TorqueAbstractSecurityEntity$Hdelete()
      */
     @Override
 	public void delete() throws TorqueException
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/log4j.properties b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/log4j.properties
index f29d85a..b1b2301 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/log4j.properties
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/log4j.properties
@@ -58,7 +58,7 @@
 #
 # Turbine goes into "turbine" loggers
 #
-log4j.logger.org.apache.turbine = INFO, turbine
+log4j.logger.org.apache.turbine = DEBUG, turbine
 log4j.additivity.org.apache.turbine = false
 
 #
diff --git a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/turbine-classic-pipeline.xml b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/turbine-classic-pipeline.xml
index 1cb9053..bd8f3fd 100644
--- a/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/turbine-classic-pipeline.xml
+++ b/trunk/turbine-webapp-4.0/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/conf/turbine-classic-pipeline.xml
@@ -17,16 +17,16 @@
  specific language governing permissions and limitations
  under the License.
 -->
-<org.apache.turbine.pipeline.TurbinePipeline>
+<pipeline>
   <valves>
-    <org.apache.turbine.pipeline.DetermineActionValve/>
-    <org.apache.turbine.pipeline.DetermineTargetValve/>
-    <org.apache.turbine.pipeline.DefaultSessionTimeoutValve/>
-    <org.apache.turbine.pipeline.DefaultLoginValve/>
-    <org.apache.turbine.pipeline.DefaultSessionValidationValve/>
-    <org.apache.turbine.pipeline.DefaultACLCreationValve/>
-    <org.apache.turbine.pipeline.ExecutePageValve/>
-    <org.apache.turbine.pipeline.CleanUpValve/>
-    <org.apache.turbine.pipeline.DetermineRedirectRequestedValve/>
+  <valve>org.apache.turbine.pipeline.DetermineActionValve</valve>
+    <valve>org.apache.turbine.pipeline.DetermineTargetValve</valve>
+    <valve>org.apache.turbine.pipeline.DefaultSessionTimeoutValve</valve>
+    <valve>org.apache.turbine.pipeline.DefaultLoginValve</valve>
+    <valve>org.apache.turbine.pipeline.DefaultSessionValidationValve</valve>
+    <valve>org.apache.turbine.pipeline.DefaultACLCreationValve</valve>
+    <valve>org.apache.turbine.pipeline.ExecutePageValve</valve>
+    <valve>org.apache.turbine.pipeline.CleanUpValve</valve>
+    <valve>org.apache.turbine.pipeline.DetermineRedirectRequestedValve</valve>
   </valves>
-</org.apache.turbine.pipeline.TurbinePipeline>
+</pipeline>
