diff --git a/.gitignore b/.gitignore
index bfa6a22..c152e92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-# Created by .ignore support plugin (hsz.mobi)
+./tomcat/*
diff --git a/NOTICE.txt b/NOTICE.txt
index 7c9e186..490d7b4 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -12,7 +12,7 @@
     Copyright 2003 Simon Brown, All rights reserved.
 
 * Code written by Sun Microsystems, Inc. 
-    Copyright 2005 Sun Microsystems, Inc.
+    Copyright 2009 Sun Microsystems, Inc.
 
 * Code written by Dave Johnson for RSS and Atom in Action
     Copyright 2005 David M Johnson (For RSS and Atom In Action)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0953102
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# Apache Roller
+
+[Apache Roller](http://roller.apache.org) is a Java-based, full-featured,
+multi-user and group-blog server suitable for blog sites large and small.
+Roller is typically run with Apache Tomcat and MySQL.
+Roller is made up of the following Maven projects:
+
+* _roller-project_:         Top level project
+* _app_:                    Roller Weblogger webapp, JSP pages, Velocity templates
+* _assembly-release_:       Used to create official distributions of Roller
+* _docs_:                   Roller documentation in ODT format
+* _it-selenium_:            Integrated browser tests for Roller using Selenium
+
+## Documentation
+
+The Roller Install, User and Template Guides are available in ODT format
+(for OpenOffice or LibraOffice):
+
+* https://github.com/apache/roller/tree/master/docs
+
+## For more information
+
+Hit the Roller Confluence wiki:
+
+* How to build and run Roller: https://cwiki.apache.org/confluence/x/EM4
+* How to contribute to Roller: https://cwiki.apache.org/confluence/x/2hsB
+* How to make a release of Roller: https://cwiki.apache.org/confluence/x/gycB
+* Other developer resources: https://cwiki.apache.org/confluence/x/D84
+
+## Quick start
+
+Assuming you've got a UNIX shell, Java, Maven and Git:
+
+Get the code:
+
+    $ git clone https://github.com/apache/roller.git
+
+Build and test the code:
+
+    $ cd roller
+    $ mvn clean install
+
+Run Roller in Jetty with Derby database:
+
+    $ cd app
+    $ mvn jetty:run
+
+Browse to http://localhost:8080/roller
+
+
+
+
+
+
diff --git a/README.txt b/README.txt
deleted file mode 100644
index fcf2b08..0000000
--- a/README.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-README.txt
-
-This file exists at the top-level of the Roller source tree.
-
-Roller is made up of the following Maven projects:
-
-  roller-project:         Top level project
-  app:                    Roller Weblogger webapp, JSP pages, Velocity templates
-  assembly-release:       Used to create official distributions of Roller
-  docs:                   Roller documentation in ODT (OpenOffice/LibreOffice) format
-  it-selenium             Integrated browser tests for Roller using Selenium
-
-To pull the latest trunk sources you need a Subversion client:
-  svn co https://svn.apache.org/repos/asf/roller/trunk roller_trunk
-
-Building this version of Roller requires Apache Maven 3.0.5.
-  - How to build Roller: https://cwiki.apache.org/confluence/x/EM4
-  - To build and run Roller on Eclipse: https://cwiki.apache.org/confluence/x/EM4
-
-----------------------------------------------------------
-How to build the source
-
-The normal Roller build creates a product generically suitable for use several
-application containers, however see the Roller Install guide for application server
-specific configuration information.
-
-After pulling the source tree and changing directory to its top level, as
-indicated above, the following command will build and run all unit tests:
-
-   mvn clean install
-
-After doing that, you should find the newly built Roller webapp, suitable
-for use in app/target/roller. 
-
-To build Roller, subsequently run "mvn clean install" from the assembly-release
-folder.  After that, you'll find Roller distribution files in 
-assembly-release/target. 
-
----------------------------
-NOTES
-
-Building other versions of Roller
-
-If you wish to pull a branch other than the trunk, replace the word
-"trunk" in both lines above with the appropriate branch name.  Note that
-versions of Roller before 5.0 have an Ant-based build.  In general, you should
-be able to follow instructions accompanying the sources that you pull in order
-to build that version.
-
diff --git a/app/pom.xml b/app/pom.xml
index eec883a..4739e4c 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -1,3 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -7,7 +24,7 @@
     <parent>
         <groupId>org.apache.roller</groupId>
         <artifactId>roller-project</artifactId>
-        <version>5.2.0-SNAPSHOT</version>
+        <version>5.2.0</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -16,13 +33,75 @@
     <packaging>war</packaging>
 
     <properties>
-        <lucene.version>4.10.3</lucene.version>
+        <angular.version>1.2.29</angular.version>
+        <ant.version>1.10.1</ant.version>
+        <commons-validator.version>1.6</commons-validator.version>
+        <commons-beanutils.version>1.9.3</commons-beanutils.version>
+        <commons-httpclient.version>3.1</commons-httpclient.version>
+        <commons-codec.version>1.10</commons-codec.version>
+        <eclipse-link.version>2.5.2</eclipse-link.version>
+        <guice.version>4.1.0</guice.version>
+        <java-mail.version>1.4.7</java-mail.version>
+        <jsp-api.version>2.2</jsp-api.version>
+        <jstl.version>1.2</jstl.version>
+        <log4j.version>1.2.17</log4j.version>
+        <log4j2.version>2.8.2</log4j2.version>
+        <lucene.version>4.10.4</lucene.version>
+        <oauth-core.version>20100527</oauth-core.version>
+        <maven-war.version>3.1.0</maven-war.version>
+        <maven-surefire.version>2.17</maven-surefire.version>
+        <maven-antrun.version>1.0b3</maven-antrun.version>
+        <rome.version>1.7.4</rome.version>
+        <servlet.version>3.0.1</servlet.version>
+        <slf4j.version>1.7.25</slf4j.version>
         <spring.version>4.1.4.RELEASE</spring.version>
         <spring.security.version>3.2.5.RELEASE</spring.security.version>
+        <struts.version>2.5.12</struts.version>
+        <velocity.version>1.7</velocity.version>
+        <webjars.version>1.5</webjars.version>
+        <ws-commons-util.version>1.0.2</ws-commons-util.version>
+        <xml-security.version>1.3.0</xml-security.version>
+        <xmlrpc-version>3.1.3</xmlrpc-version>
     </properties>
 
     <dependencies>
 
+
+        <!-- Java EE deps -->
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>javax.servlet-api</artifactId>
+            <version>${servlet.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet.jsp</groupId>
+            <artifactId>jsp-api</artifactId>
+            <version>${jsp-api.version}</version>
+            <scope>provided</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.servlet</groupId>
+            <artifactId>jstl</artifactId>
+            <version>${jstl.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>javax.mail</groupId>
+            <artifactId>mail</artifactId>
+            <version>${java-mail.version}</version>
+            <scope>provided</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>javax.activation</groupId>
+                    <artifactId>activation</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
         <!-- Eclipselink JPA is the default JPA implementation used by
              Roller, comment out this dependency and uncomment Hibernate's
              to use that stack instead.
@@ -34,7 +113,7 @@
         <dependency>
             <groupId>org.eclipse.persistence</groupId>
             <artifactId>eclipselink</artifactId>
-            <version>2.5.2</version>
+            <version>${eclipse-link.version}</version>
         </dependency>
 
         <!-- Alternative testing with Hibernate (used by default with JBoss)
@@ -72,16 +151,37 @@
              to this pom.xml.  Check the Roller source code repository for a copy of
              this pom.xml prior to July 2013 for the necessary OpenJPA configuration -->
 
+
+        <!-- Apache deps include Velocity, Struts, Lucene, HttpClient and XML-RPC -->
+
         <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.17</version>
+            <groupId>org.apache.velocity</groupId>
+            <artifactId>velocity</artifactId>
+            <version>${velocity.version}</version>
         </dependency>
 
         <dependency>
-            <groupId>com.google.inject</groupId>
-            <artifactId>guice</artifactId>
-            <version>4.0</version>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-core</artifactId>
+            <version>${struts.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-spring-plugin</artifactId>
+            <version>${struts.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-convention-plugin</artifactId>
+            <version>${struts.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-tiles-plugin</artifactId>
+            <version>${struts.version}</version>
         </dependency>
 
         <dependency>
@@ -99,27 +199,64 @@
         </dependency>
 
         <dependency>
-            <groupId>org.apache.velocity</groupId>
-            <artifactId>velocity</artifactId>
-            <version>1.7</version>
+            <groupId>log4j</groupId>
+            <artifactId>log4j</artifactId>
+            <version>${log4j.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.logging.log4j</groupId>
+            <artifactId>log4j-core</artifactId>
+            <version>${log4j2.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-validator</groupId>
+            <artifactId>commons-validator</artifactId>
+            <version>${commons-validator.version}</version>
+            <type>jar</type>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-beanutils</groupId>
+            <artifactId>commons-beanutils</artifactId>
+            <version>${commons-beanutils.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-httpclient</groupId>
+            <artifactId>commons-httpclient</artifactId>
+            <version>${commons-httpclient.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>commons-codec</groupId>
+            <artifactId>commons-codec</artifactId>
+            <version>${commons-codec.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>xml-security</groupId>
+            <artifactId>xmlsec</artifactId>
+            <version>${xml-security.version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.xmlrpc</groupId>
             <artifactId>xmlrpc-common</artifactId>
-            <version>3.1.3</version>
+            <version>${xmlrpc-version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.xmlrpc</groupId>
             <artifactId>xmlrpc-client</artifactId>
-            <version>3.1.3</version>
+            <version>${xmlrpc-version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.apache.xmlrpc</groupId>
             <artifactId>xmlrpc-server</artifactId>
-            <version>3.1.3</version>
+            <version>${xmlrpc-version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>javax.servlet</groupId>
@@ -131,7 +268,7 @@
         <dependency>
             <groupId>org.apache.ws.commons.util</groupId>
             <artifactId>ws-commons-util</artifactId>
-            <version>1.0.2</version>
+            <version>${ws-commons-util.version}</version>
             <exclusions>
                 <exclusion>
                     <groupId>xml-apis</groupId>
@@ -140,54 +277,8 @@
             </exclusions>
         </dependency>
 
-        <dependency>
-            <groupId>net.oauth.core</groupId>
-            <artifactId>oauth-provider</artifactId>
-            <scope>compile</scope>
-            <version>20100527</version>
-        </dependency>
 
-        <!-- web -->
-
-        <dependency>
-	        <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>3.0.1</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.rometools</groupId>
-            <artifactId>rome-fetcher</artifactId>
-            <version>1.5.0</version>
-            <scope>compile</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.rometools</groupId>
-            <artifactId>rome-propono</artifactId>
-            <version>1.5.0</version>
-            <scope>compile</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>xmlrpc</groupId>
-                    <artifactId>xmlrpc-common</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>xmlrpc</groupId>
-                    <artifactId>xmlrpc-client</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <version>1.7.10</version>
-            <scope>runtime</scope>
-        </dependency>
-
-        <!-- spring deps -->
+        <!-- Spring deps (needed only for Spring Security) -->
 
         <dependency>
             <groupId>org.springframework</groupId>
@@ -249,101 +340,85 @@
             </exclusions>
         </dependency>
 
+
+        <!-- Other deps include Guice and ROME -->
+
         <dependency>
-            <groupId>org.apache.struts</groupId>
-            <artifactId>struts2-spring-plugin</artifactId>
-            <version>2.5.10.1</version>
+            <groupId>com.google.inject</groupId>
+            <artifactId>guice</artifactId>
+            <version>${guice.version}</version>
         </dependency>
 
         <dependency>
-            <groupId>org.apache.struts</groupId>
-            <artifactId>struts2-tiles-plugin</artifactId>
-            <version>2.5.10.1</version>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-log4j12</artifactId>
+            <version>${slf4j.version}</version>
+            <scope>runtime</scope>
         </dependency>
 
         <dependency>
-            <groupId>xml-security</groupId>
-            <artifactId>xmlsec</artifactId>
-            <version>1.3.0</version>
-        </dependency>
-
-        <!-- Java EE deps -->
-
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>jstl</artifactId>
-            <version>1.2</version>
+            <groupId>com.rometools</groupId>
+            <artifactId>rome-fetcher</artifactId>
+            <version>${rome.version}</version>
+            <scope>compile</scope>
         </dependency>
 
         <dependency>
-            <groupId>javax.mail</groupId>
-            <artifactId>mail</artifactId>
-            <version>1.4.7</version>
-            <scope>provided</scope>
+            <groupId>com.rometools</groupId>
+            <artifactId>rome-propono</artifactId>
+            <version>${rome.version}</version>
+            <scope>compile</scope>
             <exclusions>
                 <exclusion>
-                    <groupId>javax.activation</groupId>
-                    <artifactId>activation</artifactId>
+                    <groupId>xmlrpc</groupId>
+                    <artifactId>xmlrpc-common</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>xmlrpc</groupId>
+                    <artifactId>xmlrpc-client</artifactId>
                 </exclusion>
             </exclusions>
         </dependency>
 
         <dependency>
-            <groupId>javax.servlet.jsp</groupId>
-            <artifactId>jsp-api</artifactId>
-            <version>2.2</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-validator</groupId>
-            <artifactId>commons-validator</artifactId>
-            <version>1.4.0</version>
-            <type>jar</type>
-        </dependency>
-        <dependency>
-            <groupId>commons-httpclient</groupId>
-            <artifactId>commons-httpclient</artifactId>
-            <version>3.1</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-beanutils</groupId>
-            <artifactId>commons-beanutils</artifactId>
-            <version>1.9.2</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-codec</groupId>
-            <artifactId>commons-codec</artifactId>
-            <version>1.10</version>
-        </dependency>
-
-        <!-- WebJars deps -->
-
-        <dependency>
             <groupId>org.webjars</groupId>
             <artifactId>webjars-servlet-2.x</artifactId>
-            <version>1.5</version>
+            <version>${webjars.version}</version>
         </dependency>
 
         <dependency>
             <groupId>org.webjars.npm</groupId>
             <artifactId>angular</artifactId>
-            <version>1.2.29</version>
+            <version>${angular.version}</version>
         </dependency>
 
-        <!-- test deps -->
+        <dependency>
+            <groupId>net.oauth.core</groupId>
+            <artifactId>oauth-provider</artifactId>
+            <scope>compile</scope>
+            <version>${oauth-core.version}</version>
+        </dependency>
+
+
+        <!-- Test deps -->
 
         <dependency>
-            <groupId>org.apache.derby</groupId>
-            <artifactId>derbynet</artifactId>
-            <version>${derby.version}</version>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
 
         <dependency>
             <groupId>org.apache.ant</groupId>
             <artifactId>ant</artifactId>
-            <version>1.9.4</version>
+            <version>${ant.version}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.derby</groupId>
+            <artifactId>derbynet</artifactId>
+            <version>${derby.version}</version>
             <scope>test</scope>
         </dependency>
 
@@ -354,11 +429,6 @@
             <scope>test</scope>
         </dependency>
 
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
@@ -370,7 +440,7 @@
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-war-plugin</artifactId>
-                <version>2.4</version>
+                <version>${maven-war.version}</version>
                 <configuration>
                     <attachClasses>true</attachClasses>
                 </configuration>
@@ -406,7 +476,7 @@
                     <dependency>
 	                    <groupId>javax.mail</groupId>
 	                    <artifactId>mail</artifactId>
-	                    <version>1.4.7</version>
+	                    <version>${java-mail.version}</version>
                     </dependency>
                 </dependencies>
             </plugin>
@@ -463,7 +533,7 @@
                             <resources>
                                 <resource>
                                     <directory>src/main/resources</directory>
-                                    <filtering>true</filtering>
+                                    <filtering>false</filtering>
                                 </resource>
                             </resources>
                         </configuration>
@@ -538,7 +608,7 @@
                     <dependency>
                         <groupId>ant-contrib</groupId>
                         <artifactId>ant-contrib</artifactId>
-                        <version>1.0b3</version>
+                        <version>${maven-antrun.version}</version>
                         <exclusions>
                             <exclusion>
                                 <groupId>ant</groupId>
@@ -632,7 +702,7 @@
             </resource>
             <resource>
                 <!-- ensure version gets substitution -->
-                <directory>${project.basedir}/src/main/resources</directory>
+                <directory>${project.basedir}/src/main/resources-filtered</directory>
                 <filtering>true</filtering>
                 <includes>
                     <include>roller-version.properties</include>
diff --git a/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java b/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java
index 730c922..deec197 100644
--- a/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java
+++ b/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java
@@ -25,6 +25,7 @@
 import org.apache.roller.planet.pojos.SubscriptionEntry;
 import org.apache.roller.planet.pojos.PlanetGroup;
 import org.apache.roller.planet.pojos.Subscription;
+import org.apache.roller.weblogger.WebloggerException;
 
 
 /**
@@ -178,5 +179,9 @@
                            Date endDate,
                            int offset, 
                            int len) throws RollerException;
-    
+
+    /**
+     * Add new PlanetGroup and add it to an existing planet.
+     */
+    void saveNewPlanetGroup(Planet planet, PlanetGroup planetGroup) throws WebloggerException;
 }
diff --git a/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java b/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
index ff2ab15..5a24a80 100644
--- a/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
@@ -85,6 +85,10 @@
     }
     
     public void deleteGroup(PlanetGroup group) throws RollerException {
+
+        group.getPlanet().getGroups().remove(group);
+        strategy.store(group.getPlanet());
+
         strategy.remove(group);
     }
     
@@ -251,7 +255,8 @@
         if (sub == null) {
             throw new WebloggerException("subscription cannot be null");
         }
-        TypedQuery<SubscriptionEntry> q = strategy.getNamedQuery("SubscriptionEntry.getBySubscription", SubscriptionEntry.class);
+        TypedQuery<SubscriptionEntry> q = strategy.getNamedQuery(
+                "SubscriptionEntry.getBySubscription", SubscriptionEntry.class);
         q.setParameter(1, sub);
         if (offset != 0) {
             q.setFirstResult(offset);
@@ -266,7 +271,8 @@
         return getEntries(group, null, null, offset, len);
     }
 
-    public List<SubscriptionEntry> getEntries(PlanetGroup group, Date startDate, Date endDate, int offset, int len) throws RollerException {
+    public List<SubscriptionEntry> getEntries(
+            PlanetGroup group, Date startDate, Date endDate, int offset, int len) throws RollerException {
 
         if (group == null) {
             throw new WebloggerException("group cannot be null or empty");
@@ -319,6 +325,16 @@
         
         return ret;
     }
+
+    @Override
+    public void saveNewPlanetGroup(Planet planet, PlanetGroup planetGroup) throws WebloggerException {
+
+        planetGroup.setPlanet( planet );
+        strategy.store( planetGroup );
+
+        planet.getGroups().add( planetGroup );
+        strategy.store( planet );
+    }
 }
 
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
index abb2e08..afa97cf 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
@@ -33,6 +33,7 @@
 import org.apache.roller.weblogger.config.runtime.RuntimeConfigDefs;
 import org.apache.roller.weblogger.pojos.GlobalPermission;
 import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.ParameterAware;
 
 
@@ -41,6 +42,7 @@
  *
  * Handles editing of planet global runtime properties.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class PlanetConfig extends PlanetUIAction implements ParameterAware {
     
     private static Log log = LogFactory.getLog(PlanetConfig.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
index 3edc03a..f65c480 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
@@ -22,13 +22,17 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.planet.business.PlanetManager;
+import org.apache.roller.planet.pojos.Planet;
 import org.apache.roller.planet.pojos.PlanetGroup;
+import org.apache.roller.weblogger.business.Weblogger;
 import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Manage planet groups.
  */
+// TODO: make this work @AllowedMethods({"execute","save","delete"})
 public class PlanetGroups extends PlanetUIAction {
     
     private static Log log = LogFactory.getLog(PlanetGroups.class);
@@ -79,42 +83,47 @@
         
         return LIST;
     }
-    
-    
-    /** 
+
+
+    /**
      * Save group.
      */
     public String save() {
-        
+
         myValidate();
-        
+
         if (!hasActionErrors()) {
             try {
+                PlanetManager planetManager = WebloggerFactory.getWeblogger().getPlanetManager();
+
+                Planet planet = getPlanet();
                 PlanetGroup planetGroup = getGroup();
-                if(planetGroup == null) {
-                    log.debug("Adding New Group");
+
+                if (planetGroup == null) {
                     planetGroup = new PlanetGroup();
-                    planetGroup.setPlanet(getPlanet());
+                    planetGroup.setPlanet(planet);
+                    getBean().copyTo(planetGroup);
+
+                    log.debug("Adding New Group: " + planetGroup.getHandle());
+                    planetManager.saveNewPlanetGroup(getPlanet(), planetGroup);
+
                 } else {
-                    log.debug("Updating Existing Group");
+                    log.debug("Updating Existing Group: " + planetGroup.getHandle());
+                    getBean().copyTo(planetGroup);
+                    planetManager.saveGroup(planetGroup);
                 }
 
-                // copy in submitted data
-                getBean().copyTo(planetGroup);
-
-                // save and flush
-                PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
-                pmgr.saveGroup(planetGroup);
                 WebloggerFactory.getWeblogger().flush();
-
                 addMessage("planetGroups.success.saved");
 
-            } catch(Exception ex) {
+                setGroup(null);
+
+            } catch (Exception ex) {
                 log.error("Error saving planet group - " + getBean().getId(), ex);
                 addError("planetGroups.error.saved");
             }
         }
-        
+
         return LIST;
     }
 
@@ -131,6 +140,9 @@
                 WebloggerFactory.getWeblogger().flush();
                 
                 addMessage("planetSubscription.success.deleted");
+
+                setGroup(null);
+
             } catch(Exception ex) {
                 log.error("Error deleting planet group - "+getBean().getId());
                 addError("Error deleting planet group");
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
index 5063be5..899eaa2 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
@@ -30,11 +30,13 @@
 import org.apache.roller.planet.pojos.Subscription;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.pojos.GlobalPermission;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Manage planet group subscriptions, default group is "all".
  */
+// TODO: make this work @AllowedMethods({"execute","save","delete"})
 public class PlanetSubscriptions extends PlanetUIAction {
     
     private static final Log LOGGER = LogFactory.getLog(PlanetSubscriptions.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
index 79a2783..e75f266 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
@@ -24,11 +24,13 @@
 import org.apache.roller.weblogger.pojos.GlobalPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Action for displaying rendering cache info.
  */
+// TODO: make this work @AllowedMethods({"execute"})
 public class CacheInfo extends UIAction {
     
     // map of stats to display
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
index 21b40dc..750a8f1 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
@@ -41,12 +41,14 @@
 import org.apache.roller.weblogger.util.cache.CacheManager;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.ServletRequestAware;
 
 
 /**
  * Action for managing global set of comments.
  */
+// TODO: make this work @AllowedMethods({"query","delete","update"})
 public class GlobalCommentManagement extends UIAction implements ServletRequestAware {
     
     private static Log log = LogFactory.getLog(GlobalCommentManagement.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
index 6f474b7..da71a41 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
@@ -39,6 +39,7 @@
 import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
 import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.ParameterAware;
 import org.apache.struts2.interceptor.ServletRequestAware;
 
@@ -46,6 +47,7 @@
 /**
  * Action which handles editing of global configuration.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class GlobalConfig extends UIAction implements ParameterAware, ServletRequestAware {
     
     private static Log log = LogFactory.getLog(GlobalConfig.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
index 2769576..1b5d13c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
@@ -26,10 +26,12 @@
 import org.apache.roller.weblogger.business.pings.PingTargetManager;
 import org.apache.roller.weblogger.pojos.PingTarget;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Add or modify a common ping target.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class PingTargetEdit extends UIAction {
     
     private static Log log = LogFactory.getLog(PingTargetEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
index 1f8b487..fa7529a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
@@ -29,10 +29,12 @@
 import org.apache.roller.weblogger.business.pings.PingTargetManager;
 import org.apache.roller.weblogger.pojos.PingTarget;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Admin action for managing global ping targets.
  */
+// TODO: make this work @AllowedMethods({"execute","enable","disable","delete","deleteConfirm"})
 public class PingTargets extends UIAction {
     
     private static Log log = LogFactory.getLog(PingTargets.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
index dce1f79..63613a5 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
@@ -25,11 +25,13 @@
 import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.pojos.GlobalPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Action which displays user admin search page.
  */
+// TODO: make this work @AllowedMethods({"execute"})
 public class UserAdmin extends UIAction {
     
     public UserAdmin() {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
index cd73584..afdc522 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
@@ -39,12 +39,14 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.core.Register;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Action that allows an admin to modify a users profile.
  */
+// TODO: make this work @AllowedMethods({"execute","save","firstSave"})
 public class UserEdit extends UIAction {
     
     private static Log log = LogFactory.getLog(UserEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
index 10f918f..8795442 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
@@ -33,6 +33,7 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 import java.util.List;
@@ -41,6 +42,7 @@
 /**
  * Allows user to create a new website.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class CreateWeblog extends UIAction {
     
     private static Log log = LogFactory.getLog(CreateWeblog.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
index b5becd2..e67cc85 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
@@ -31,12 +31,14 @@
 import org.apache.roller.weblogger.business.startup.WebloggerStartup;
 import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.springframework.beans.factory.access.BootstrapException;
 
 
 /**
  * Walk user through install process.
  */
+// TODO: make this work @AllowedMethods({"execute","create","update","bootstrap"})
 public class Install extends UIAction {
 
     private static Log log = LogFactory.getLog(Install.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
index 4485c7d..f0fbe76 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
@@ -21,6 +21,7 @@
 import org.apache.roller.weblogger.config.AuthMethod;
 import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Handle user logins.
@@ -33,6 +34,7 @@
  *
  * @see org.apache.roller.weblogger.ui.struts2.core.Register
  */
+// TODO: make this work @AllowedMethods({"execute"})
 public class Login extends UIAction {
     
     private String error = null;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
index ae48acc..9378018 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
@@ -29,11 +29,13 @@
 import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Allows user to view and pick from list of his/her websites.
  */
+// TODO: make this work @AllowedMethods({"execute","accept","decline"})
 public class MainMenu extends UIAction {
     
     private static Log log = LogFactory.getLog(MainMenu.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java
index f20c67d..f36e07b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java
@@ -22,6 +22,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.ServletRequestAware;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
@@ -29,6 +30,7 @@
 /**
  * Allow user to authorized OAuth access to his/her account.
  */
+// TODO: make this work @AllowedMethods({"execute"})
 public class OAuthAuthorize extends UIAction implements ServletRequestAware {
     private static Log log = LogFactory.getLog(OAuthAuthorize.class);
     private String appDesc = null;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
index 1d5d4d6..6b6fa51 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
@@ -26,12 +26,14 @@
 import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Allows user to view his/her OAuth consumer key and secret.
  */
+// TODO: make this work @AllowedMethods({"execute"})
 public class OAuthKeys extends UIAction {
     private static Log log = LogFactory.getLog(OAuthKeys.class);
     private OAuthConsumer userConsumer;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
index f9e1d63..37e01d5 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
@@ -28,12 +28,14 @@
 import org.apache.roller.weblogger.config.WebloggerConfig;
 import org.apache.roller.weblogger.pojos.User;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Allows user to edit his/her profile.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class Profile extends UIAction {
     private static Log log = LogFactory.getLog(Profile.class);
     
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
index 138aadb..f3b906c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
@@ -37,6 +37,7 @@
 import org.apache.roller.weblogger.ui.core.security.CustomUserRegistry;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.MailUtil;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.ServletRequestAware;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
@@ -49,6 +50,7 @@
  *
  * @see org.apache.roller.weblogger.ui.struts2.core.Login
  */
+// TODO: make this work @AllowedMethods({"execute","save","activate"})
 public class Register extends UIAction implements ServletRequestAware {
     
     private static Log log = LogFactory.getLog(Register.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java
index f7ac6cb..0cd64fb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java
@@ -28,11 +28,13 @@
 import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
 import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Page used to display Roller install instructions.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class Setup extends UIAction {
     
     private static final Log LOG = LogFactory.getLog(Setup.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
index 725dcfd..852ec72 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
@@ -27,12 +27,14 @@
 import org.apache.roller.weblogger.pojos.WeblogBookmark;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Edit a new or existing bookmark (blogroll item).
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class BookmarkEdit extends UIAction {
     
     private static Log log = LogFactory.getLog(BookmarkEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
index 77b3daa..f695072 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
@@ -32,11 +32,13 @@
 import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * List bookmarks and folders and allow for moving them around and deleting them.
  */
+// TODO: make this work @AllowedMethods({"execute","delete","deleteFolder","move","view","folderCreated"})
 public class Bookmarks extends UIAction {
 
     private static Log log = LogFactory.getLog(Bookmarks.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java
index c2d7cd2..b225cc2 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java
@@ -31,11 +31,13 @@
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Import opml file into bookmarks folder.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public final class BookmarksImport extends UIAction {
     
     private static Log log = LogFactory.getLog(BookmarksImport.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
index ae6e7fa..dd9389f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
@@ -28,10 +28,12 @@
 import org.apache.roller.weblogger.pojos.WeblogCategory;
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Manage weblog categories.
  */
+// TODO: make this work @AllowedMethods({"execute","move"})
 public class Categories extends UIAction {
 
 	private static Log log = LogFactory.getLog(Categories.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java
index 99fbc9f..9d2c517 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java
@@ -30,12 +30,14 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Edit a new or existing weblog category.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class CategoryEdit extends UIAction {
     
     private static Log log = LogFactory.getLog(CategoryEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
index c161b27..206e89b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
@@ -32,11 +32,13 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Remove a category.
  */
+// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
 public class CategoryRemove extends UIAction {
     
     private static Log log = LogFactory.getLog(CategoryRemove.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java
index 899009e..10c663a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java
@@ -47,10 +47,12 @@
 import org.apache.roller.weblogger.util.I18nMessages;
 import org.apache.roller.weblogger.util.MailUtil;
 import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Action for managing weblog comments.
  */
+// TODO: make this work @AllowedMethods({"execute","query","delete","update"})
 public class Comments extends UIAction {
 
     private static final long serialVersionUID = -104973988372024709L;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
index b0530ad..9f15e2d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
@@ -36,11 +36,13 @@
 import org.apache.roller.weblogger.ui.struts2.pagers.EntriesPager;
 import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * A list view of entries in a weblog.
  */
+// TODO: make this work @AllowedMethods({"execute"})
 public class Entries extends UIAction {
     
     private static Log log = LogFactory.getLog(Entries.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
index c3bb6ef..02a3677 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
@@ -23,12 +23,14 @@
 import org.apache.roller.weblogger.business.MediaFileManager;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * Prepares creation of a new weblog entry with an embedded pointer to a media file.
  */
 @SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
 public class EntryAddWithMediaFile extends MediaFileBase {
 
     private static Log log = LogFactory.getLog(EntryAddWithMediaFile.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
index 3d2461c..9ffcb2e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
@@ -57,11 +57,13 @@
 import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
 import org.apache.roller.weblogger.util.Trackback;
 import org.apache.roller.weblogger.util.TrackbackNotAllowedException;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * Edit a new or existing entry.
  */
+// TODO: make this work @AllowedMethods({"execute","firstSave","saveDraft","publish","entryEdit","entryAdd"})
 public final class EntryEdit extends UIAction {
 
     private static Log log = LogFactory.getLog(EntryEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
index b6832c4..64266ed 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
@@ -28,6 +28,7 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 import java.util.Collections;
 import java.util.List;
@@ -35,6 +36,7 @@
 /**
  * Remove a weblog entry.
  */
+// TODO: make this work @AllowedMethods({"execute","remove"})
 public class EntryRemove extends UIAction {
 
     private static Log log = LogFactory.getLog(EntryRemove.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
index 10a7201..141c1c2 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
@@ -27,12 +27,14 @@
 import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Edit a new or existing folder.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class FolderEdit extends UIAction {
     
     private static Log log = LogFactory.getLog(FolderEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java
index a1d4ade..8b57dd9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java
@@ -28,11 +28,13 @@
 import org.apache.roller.weblogger.pojos.Weblog;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Allows user to perform maintenance operations such as flushing the page cache
  * or re-indexing the search index.
  */
+// TODO: make this work @AllowedMethods({"execute","index","flushCache","reset"})
 public class Maintenance extends UIAction {
 
     private static Log log = LogFactory.getLog(Maintenance.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
index 8c9e48b..dc75df8 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
@@ -36,12 +36,14 @@
 import org.apache.roller.weblogger.util.RollerMessages;
 import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
 import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * Adds a new media file.
  */
 @SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class MediaFileAdd extends MediaFileBase {
 
     private static Log log = LogFactory.getLog(MediaFileAdd.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
index 8977ae3..f6045d4 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
@@ -29,12 +29,14 @@
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.pojos.MediaFile;
 import org.apache.roller.weblogger.pojos.MediaFileDirectory;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * Edits metadata for a media file.
  */
 @SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class MediaFileEdit extends MediaFileBase {
 
     private static Log log = LogFactory.getLog(MediaFileEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java
index 4a17fe3..4e90654 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java
@@ -33,12 +33,14 @@
 import org.apache.roller.weblogger.pojos.MediaFileDirectoryComparator.DirectoryComparatorType;
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * Browse media files action.
  */
 @SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
 public class MediaFileImageChooser extends MediaFileBase {
     private static Log log = LogFactory.getLog(MediaFileImageChooser.class);
 
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
index cad891a..df5d2e7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
@@ -23,12 +23,14 @@
 import org.apache.roller.weblogger.business.MediaFileManager;
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * Action class for choosing image dimensions.
  */
 @SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
 public class MediaFileImageDim extends MediaFileBase {
 
     private static Log log = LogFactory.getLog(MediaFileImageDim.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
index 4590748..62644c0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
@@ -37,12 +37,14 @@
 import org.apache.roller.weblogger.ui.struts2.pagers.MediaFilePager;
 import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 /**
  * View media files.
  */
 @SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute","view","search","delete","deleteSelected","deleteFolder","includeInGallery","moveSelected"})
 public class MediaFileView extends MediaFileBase {
 
     private static Log log = LogFactory.getLog(MediaFileView.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java
index a38e0c4..9f01f31 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java
@@ -27,10 +27,12 @@
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Action for resigning from a weblog.
  */
+// TODO: make this work @AllowedMethods({"execute","resign"})
 public class MemberResign extends UIAction {
 
     private static Log log = LogFactory.getLog(MemberResign.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
index e0b7e1a..ee89d9a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
@@ -31,6 +31,7 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.ParameterAware;
 
 
@@ -40,6 +41,7 @@
  * TODO: fix bug in UserManager which doesn't remove permissions from the
  * website.permissions collection when a permission is deleted.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class Members extends UIAction implements ParameterAware {
     
     private static Log log = LogFactory.getLog(Members.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
index e8a17cf..46104b8 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
@@ -30,6 +30,7 @@
 import org.apache.roller.weblogger.pojos.WeblogPermission;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.MailUtil;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
@@ -37,6 +38,7 @@
  *
  * TODO: handle 'disabled' result
  */
+// TODO: make this work @AllowedMethods({"execute","save","cancel"})
 public class MembersInvite extends UIAction {
     
     private static Log log = LogFactory.getLog(MembersInvite.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java
index 2ab252e..737a649 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java
@@ -28,6 +28,7 @@
 import org.apache.roller.weblogger.pojos.AutoPing;
 import org.apache.roller.weblogger.pojos.PingTarget;
 import org.apache.roller.weblogger.business.pings.WeblogUpdatePinger;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.xmlrpc.XmlRpcException;
 import java.io.IOException;
 import java.net.SocketException;
@@ -43,6 +44,7 @@
 /**
  * Actions for setting up automatic ping configuration for a weblog.
  */
+// TODO: make this work @AllowedMethods({"execute","enable","disable","pingNow"})
 public class Pings extends UIAction {
     
     private static Log log = LogFactory.getLog(Pings.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
index 27d0b49..a206b05 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
@@ -37,10 +37,12 @@
 import org.apache.roller.weblogger.pojos.WeblogTheme;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Action which handles editing for a weblog stylesheet override template.
  */
+// TODO: make this work @AllowedMethods({"execute","move","delete","revert"})
 public class StylesheetEdit extends UIAction {
 
     private static final long serialVersionUID = 4657591015852311907L;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
index 9be3ba4..19d34ff 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
@@ -27,6 +27,7 @@
 import org.apache.roller.weblogger.pojos.WeblogTemplate;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 import java.util.Date;
@@ -37,6 +38,7 @@
 /**
  * Action which handles editing for a single WeblogTemplate.
  */
+// TODO: make this work @AllowedMethods({"execute","move"})
 public class TemplateEdit extends UIAction {
 
     private static Log log = LogFactory.getLog(TemplateEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
index 298e54b..4f9a82b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
@@ -29,10 +29,12 @@
 import org.apache.roller.weblogger.pojos.WeblogTheme;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Remove a template.
  */
+// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
 public class TemplateRemove extends UIAction {
 
 	private static Log log = LogFactory.getLog(TemplateRemove.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
index cb5ef89..4793e11 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
@@ -31,6 +31,7 @@
 import org.apache.roller.weblogger.pojos.WeblogTemplate;
 import org.apache.roller.weblogger.pojos.WeblogTheme;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -42,6 +43,7 @@
 /**
  * Templates listing page.
  */
+// TODO: make this work @AllowedMethods({"execute","add"})
 public class Templates extends UIAction {
 
 	private static Log log = LogFactory.getLog(Templates.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java
index e92db7f..7fd3e26 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java
@@ -32,10 +32,12 @@
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.Utilities;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Remove templates.
  */
+// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
 public class TemplatesRemove extends UIAction {
 
     private static final long serialVersionUID = 895186156151331087L;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
index 4d48abf..c603fdb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
@@ -37,10 +37,12 @@
 import org.apache.roller.weblogger.pojos.WeblogTemplate;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 /**
  * Action for controlling theme selection.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class ThemeEdit extends UIAction {
 
     private static final long serialVersionUID = 4644653507344432426L;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java
index a0a8fc0..bcc9f57 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java
@@ -36,12 +36,14 @@
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.Blacklist;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 import org.apache.struts2.interceptor.validation.SkipValidation;
 
 
 /**
  * Action for modifying weblog configuration.
  */
+// TODO: make this work @AllowedMethods({"execute","save"})
 public class WeblogConfig extends UIAction {
     
     private static Log log = LogFactory.getLog(WeblogConfig.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java
index be2b4ef..b41a9ca 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java
@@ -23,11 +23,13 @@
 import org.apache.roller.weblogger.business.WebloggerFactory;
 import org.apache.roller.weblogger.ui.struts2.util.UIAction;
 import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
 
 
 /**
  * Action for removing a weblog.
  */
+// TODO: make this work @AllowedMethods({"execute","remove"})
 public class WeblogRemove extends UIAction {
 
     private static Log log = LogFactory.getLog(WeblogRemove.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java b/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java
index bec0388..4d567ca 100644
--- a/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java
+++ b/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java
@@ -214,7 +214,7 @@
     }
 
     /** 
-     * Reset user's password to specified value using specified algorythm (if needed) 
+     * Reset user's password to specified value using specified algorithm (if needed)
      */
     private static void resetPassword(
                     Connection con, String username, String password, String algorithm) 
diff --git a/app/src/main/resources/roller-version.properties b/app/src/main/resources-filtered/roller-version.properties
similarity index 100%
rename from app/src/main/resources/roller-version.properties
rename to app/src/main/resources-filtered/roller-version.properties
diff --git a/app/src/main/resources/ApplicationResources.properties b/app/src/main/resources/ApplicationResources.properties
index 0a2f8c5..8a68c56 100644
--- a/app/src/main/resources/ApplicationResources.properties
+++ b/app/src/main/resources/ApplicationResources.properties
@@ -1179,6 +1179,8 @@
 planetGroups.title=Title
 planetGroups.handle=Handle
 
+planetGroups.subscriptions.tip=Edit the subscriptions in this Custom Group
+
 planetGroups.success.saved=Saved group
 planetGroups.error.saved=Error saving planet group - duplicate?
 
diff --git a/app/src/main/resources/log4j2.xml b/app/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..6fcf939
--- /dev/null
+++ b/app/src/main/resources/log4j2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
+<Configuration status="WARN">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Root level="error">
+            <AppenderRef ref="Console"/>
+        </Root>
+        <Logger name="org.apache.struts2" level="warn">
+            <AppenderRef ref="Console"/>
+        </Logger>
+    </Loggers>
+</Configuration>
diff --git a/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties b/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties
index aa3997f..785a893 100644
--- a/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties
+++ b/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties
@@ -567,7 +567,7 @@
 log4j.rootLogger=ERROR, roller
 
 log4j.appender.roller=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.roller.File=${env.CATALINA_HOME}/logs/roller.log
+log4j.appender.roller.File=${catalina.base}/logs/roller.log
 log4j.appender.roller.layout=org.apache.log4j.PatternLayout
 log4j.appender.roller.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
 
diff --git a/app/src/main/resources/sql/510-to-520-migration.vm b/app/src/main/resources/sql/510-to-520-migration.vm
index a06e998..42dcecb 100644
--- a/app/src/main/resources/sql/510-to-520-migration.vm
+++ b/app/src/main/resources/sql/510-to-520-migration.vm
@@ -32,8 +32,8 @@
 
 #expandTimestampNotNull('pingqueueentry' 'entrytime')
 #expandTimestamp('pingtarget' 'lastsuccess')
-#expandTimestampNotNull('rag_entry' 'published')
 #expandTimestamp('rag_entry' 'updated')
+#expandTimestampNotNull('rag_entry' 'published')
 #expandTimestamp('rag_subscription' 'last_updated')
 #expandTimestamp('roller_audit_log' 'change_time')
 #expandTimestampNotNull('roller_comment' 'posttime')
diff --git a/app/src/main/resources/struts.xml b/app/src/main/resources/struts.xml
index fd24563..3c9a4c6 100644
--- a/app/src/main/resources/struts.xml
+++ b/app/src/main/resources/struts.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
 <!DOCTYPE struts PUBLIC
-    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
-    "http://struts.apache.org/dtds/struts-2.3.dtd">
+        "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+        "http://struts.apache.org/dtds/struts-2.5.dtd">
 <struts>
-    
+
     <!-- Weblogger default package -->
     <package name="weblogger" namespace="/roller-ui" extends="struts-default">
-        
+
         <!-- Define Tiles result type -->
         <result-types>
             <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
@@ -71,12 +72,18 @@
         <!-- use our own interceptor stack which extends the default stack -->
         <default-interceptor-ref name="rollerStack"/>
         
-        
         <!-- results made available to all actions -->
         <global-results>
             <result name="access-denied" type="tiles">.denied</result>
         </global-results>
-        
+
+        <global-allowed-methods>
+            accept,
+            activate,
+            decline,
+            execute
+        </global-allowed-methods>
+
         <!-- Simple actions which basically just replace the global-forwards from
              the old struts 1 config.  this is the only way to do it in struts 2 -->
         <action name="home">
@@ -102,64 +109,88 @@
             <result type="tiles">.Login</result>
         </action>
         
-        <action name="register!*" method="{1}"
+        <action name="register"
                 class="org.apache.roller.weblogger.ui.struts2.core.Register">
             <result name="input" type="tiles">.Register</result>
             <result name="disabled" type="tiles">.GenericError</result>
             <result name="success" type="tiles">.Welcome</result>
         </action>
         
-        <action name="profile!*" method="{1}"
+        <action name="profile"
                 class="org.apache.roller.weblogger.ui.struts2.core.Profile">
             <result name="input" type="tiles">.Profile</result>
             <result name="cancel" type="redirectAction">menu</result>
             <result name="success" type="tiles">.Profile</result>
         </action>
 
-        <action name="oauthKeys!*" method="{1}"
+        <action name="oauthKeys"
                 class="org.apache.roller.weblogger.ui.struts2.core.OAuthKeys">
             <result name="success" type="tiles">.OAuthKeys</result>
         </action>
 
-        <action name="oauthAuthorize!*" method="{1}"
+        <action name="oauthAuthorize"
                 class="org.apache.roller.weblogger.ui.struts2.core.OAuthAuthorize">
             <result name="success" type="tiles">.OAuthAuthorize</result>
         </action>
 
-        <action name="createWeblog!*" method="{1}"
+        <action name="createWeblog"
                 class="org.apache.roller.weblogger.ui.struts2.core.CreateWeblog">
             <result name="input" type="tiles">.CreateWeblog</result>
             <result name="disabled" type="tiles">.GenericError</result>
             <result name="success" type="chain">menu</result>
         </action>
         
-        <action name="menu!*" method="{1}"
+        <action name="menu"
                 class="org.apache.roller.weblogger.ui.struts2.core.MainMenu">
             <result type="tiles">.MainMenu</result>
         </action>
-        
+
     </package>
     
     
     <!-- Weblogger install/bootstrap actions -->
-    <package name="weblogger-install" namespace="/roller-ui/install" extends="weblogger">
-    
+    <package name="weblogger-install" namespace="/roller-ui/install" extends="weblogger" >
+
+        <global-allowed-methods>
+            execute,
+            create,
+            update,
+            bootstrap
+        </global-allowed-methods>
+
         <action name="install"
                 class="org.apache.roller.weblogger.ui.struts2.core.Install">
             <result name="database_error" type="tiles">.DatabaseError</result>
             <result name="create_database" type="tiles">.CreateDatabase</result>
             <result name="upgrade_database" type="tiles">.UpgradeDatabase</result>
             <result name="bootstrap" type="tiles">.Bootstrap</result>
-            <result name="success" type="chain">home</result>
+            <result name="success" type="chain">
+                <param name="actionName">home</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
         </action>
             
     </package>
     
     
     <!-- Weblogger Admin UI (includes planet) -->
-    <package name="weblogger-admin" namespace="/roller-ui/admin" extends="weblogger">
+    <package name="weblogger-admin" namespace="/roller-ui/admin" extends="weblogger" >
+
+        <global-allowed-methods>
+            clear,
+            disable,
+            delete,
+            deleteConfirm,
+            enable,
+            execute,
+            firstSave,
+            save,
+            query,
+            delete,
+            update
+        </global-allowed-methods>
         
-        <action name="globalConfig!*" method="{1}"
+        <action name="globalConfig"
                 class="org.apache.roller.weblogger.ui.struts2.admin.GlobalConfig">
             <result name="success" type="tiles">.GlobalConfig</result>
         </action>
@@ -171,7 +202,7 @@
             <result name="input" type="tiles">.UserAdmin</result>
         </action>
         
-        <action name="createUser!*" method="{1}"
+        <action name="createUser"
                 class="org.apache.roller.weblogger.ui.struts2.admin.UserEdit">
             <param name="actionName">createUser</param>
             <param name="pageTitle">userAdmin.title.createNewUser</param>
@@ -182,7 +213,7 @@
             </result>
         </action>
 
-        <action name="modifyUser!*" method="{1}"
+        <action name="modifyUser"
                 class="org.apache.roller.weblogger.ui.struts2.admin.UserEdit">
             <param name="actionName">modifyUser</param>
             <param name="pageTitle">userAdmin.title.editUser</param>
@@ -193,18 +224,18 @@
             </result>
         </action>
         
-        <action name="globalCommentManagement!*" method="{1}"
+        <action name="globalCommentManagement"
                 class="org.apache.roller.weblogger.ui.struts2.admin.GlobalCommentManagement">
             <result name="list" type="tiles">.GlobalCommentManagement</result>
         </action>
         
-        <action name="commonPingTargets!*" method="{1}"
+        <action name="commonPingTargets"
                 class="org.apache.roller.weblogger.ui.struts2.admin.PingTargets">
             <result name="list" type="tiles">.PingTargets</result>
             <result name="confirm" type="tiles">.PingTargetConfirm</result>
         </action>
         
-        <action name="commonPingTargetAdd!*" method="{1}"
+        <action name="commonPingTargetAdd"
                 class="org.apache.roller.weblogger.ui.struts2.admin.PingTargetEdit">
             <param name="actionName">commonPingTargetAdd</param>
             <param name="pageTitle">pingTarget.addTarget</param>
@@ -212,7 +243,7 @@
             <result name="success" type="chain">commonPingTargets</result>
         </action>
         
-        <action name="commonPingTargetEdit!*" method="{1}"
+        <action name="commonPingTargetEdit"
                 class="org.apache.roller.weblogger.ui.struts2.admin.PingTargetEdit">
             <param name="actionName">commonPingTargetEdit</param>
             <param name="pageTitle">pingTarget.editTarget</param>
@@ -221,23 +252,23 @@
             <result name="error" type="chain">commonPingTargets</result>
         </action>
         
-        <action name="cacheInfo!*" method="{1}"
+        <action name="cacheInfo"
                 class="org.apache.roller.weblogger.ui.struts2.admin.CacheInfo">
             <result name="success" type="tiles">.CacheInfo</result>
         </action>
         
         
-        <action name="planetConfig!*" method="{1}"
+        <action name="planetConfig"
                 class="org.apache.roller.weblogger.planet.ui.PlanetConfig">
             <result name="input" type="tiles">.PlanetConfig</result>
         </action>
         
-        <action name="planetSubscriptions!*" method="{1}"
+        <action name="planetSubscriptions"
                 class="org.apache.roller.weblogger.planet.ui.PlanetSubscriptions">
             <result name="list" type="tiles">.PlanetSubscriptions</result>
         </action>
         
-        <action name="planetGroups!*" method="{1}"
+        <action name="planetGroups"
                 class="org.apache.roller.weblogger.planet.ui.PlanetGroups">
             <result name="list" type="tiles">.PlanetGroups</result>
         </action>
@@ -245,9 +276,40 @@
     
     
     <!-- Weblogger Authoring UI -->
-    <package name="weblogger-authoring" namespace="/roller-ui/authoring" extends="weblogger">
+    <package name="weblogger-authoring" namespace="/roller-ui/authoring" extends="weblogger" >
 
-        <action name="mediaFileAdd!*" method="{1}"
+        <global-allowed-methods>
+            add,
+            cancel,
+            createNewDirectory,
+            execute,
+            delete,
+            deleteConfirm,
+            deleteFolder,
+            deleteSelected,
+            disable,
+            enable,
+            entryAdd,
+            entryEdit,
+            firstSave,
+            folderCreated,
+            flushCache,
+            includeInGallery,
+            moveSelected,
+            pingNow,
+            publish,
+            query,
+            remove,
+            revert,
+            reset,
+            save,
+            saveDraft,
+            search,
+            update,
+            view
+        </global-allowed-methods>
+
+        <action name="mediaFileAdd"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileAdd">
             <result name="input" type="tiles">.MediaFileAdd</result>
             <result name="success" type="tiles">.MediaFileAddSuccess</result>
@@ -258,36 +320,36 @@
             </result>
         </action>
 
-        <action name="mediaFileEdit!*" method="{1}"
+        <action name="mediaFileEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileEdit">
             <result name="input" type="tiles">.MediaFileEdit</result>
             <result name="success" type="tiles">.MediaFileEditSuccess</result>
         </action>
 
-        <action name="mediaFileAddExternalInclude!*" method="{1}"
+        <action name="mediaFileAddExternalInclude"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileEdit">
             <result name="input" type="tiles">.MediaFileAddExternalInclude</result>
             <result name="success" type="tiles">.MediaFileAddExternalInclude</result>
             <result name="error" type="tiles">.MediaFileAddExternalInclude</result>
         </action>
 
-	    <action name="mediaFileView!*" method="{1}"
+	    <action name="mediaFileView"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileView">
             <result name="success" type="tiles">.MediaFileView</result>
             <result name="success.json" type="dispatcher">/WEB-INF/jsps/editor/MediaFileViewLight.jsp</result>
         </action>
 
-	    <action name="mediaFileImageDim!*" method="{1}"
+	    <action name="mediaFileImageDim"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileImageDim">
             <result name="success" type="tiles">.MediaFileImageDimension</result>
         </action>
 
-        <action name="entryAddWithMediaFile!*" method="{1}"
+        <action name="entryAddWithMediaFile"
                 class="org.apache.roller.weblogger.ui.struts2.editor.EntryAddWithMediaFile">
             <result name="success" type="chain">entryAdd</result>
         </action>
 
-        <action name="entryAdd!*" method="{1}"
+        <action name="entryAdd"
                 class="org.apache.roller.weblogger.ui.struts2.editor.EntryEdit">
             <param name="actionName">entryAdd</param>
             <param name="pageTitle">weblogEdit.title.newEntry</param>
@@ -299,24 +361,30 @@
             </result>
         </action>
 
-        <action name="entryEdit!*" method="{1}"
+        <action name="entryEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.EntryEdit">
             <param name="actionName">entryEdit</param>
             <param name="pageTitle">weblogEdit.title.editEntry</param>
             <result name="input" type="tiles">.EntryEdit</result>
-            <result name="error" type="chain">menu</result>
+            <result name="error" type="chain">
+                <param name="actionName">menu</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
         </action>
         
-        <action name="entryRemove!*" method="{1}"
+        <action name="entryRemove"
                 class="org.apache.roller.weblogger.ui.struts2.editor.EntryRemove">
             <param name="actionName">entryRemove</param>
             <result name="input" type="tiles">.EntryRemove</result>
-            <result name="error" type="chain">menu</result>
+            <result name="error" type="chain">
+                <param name="actionName">menu</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
             <result name="success" type="chain">entryAdd</result>
         </action>
 
         <!-- Below activated by Entries.jsp and EntryRemove.jsp, kept separate from
-        entryRemove!* above as return pages are different, both in the confirm delete
+        entryRemove above as return pages are different, both in the confirm delete
         and cancel delete scenarios.
 
         Note the different actionName parameters.  The actionName is used to determine
@@ -325,11 +393,14 @@
         to return to the appropriate pages based on the actionName.  See Struts2
         StaticParametersInterceptor javadoc for more info on static parameters.
         -->
-        <action name="entryRemoveViaList!*" method="{1}"
+        <action name="entryRemoveViaList"
               class="org.apache.roller.weblogger.ui.struts2.editor.EntryRemove">
           <param name="actionName">entryRemoveViaList</param>
           <result name="input" type="tiles">.EntryRemove</result>
-          <result name="error" type="chain">menu</result>
+            <result name="error" type="chain">
+                <param name="actionName">menu</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
           <result name="success" type="chain">entries</result>
         </action>
 
@@ -338,17 +409,17 @@
             <result name="list" type="tiles">.Entries</result>
         </action>
         
-        <action name="comments!*" method="{1}"
+        <action name="comments"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Comments">
             <result name="list" type="tiles">.Comments</result>
         </action>
         
-        <action name="categories!*" method="{1}"
+        <action name="categories"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Categories">
             <result name="list" type="tiles">.Categories</result>
         </action>
         
-        <action name="categoryAdd!*" method="{1}"
+        <action name="categoryAdd"
                 class="org.apache.roller.weblogger.ui.struts2.editor.CategoryEdit">
             <param name="actionName">categoryAdd</param>
             <param name="pageTitle">categoryForm.add.title</param>
@@ -357,7 +428,7 @@
             <result name="error" type="chain">categories</result>
         </action>
         
-        <action name="categoryEdit!*" method="{1}"
+        <action name="categoryEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.CategoryEdit">
             <param name="actionName">categoryEdit</param>
             <param name="pageTitle">categoryForm.edit.title</param>
@@ -369,7 +440,7 @@
             </result>
         </action>
 
-        <action name="categoryRemove!*" method="{1}"
+        <action name="categoryRemove"
                 class="org.apache.roller.weblogger.ui.struts2.editor.CategoryRemove">
             <result name="input" type="tiles">.CategoryRemove</result>
             <result name="cancel" type="redirectAction">
@@ -379,12 +450,12 @@
             <result name="success" type="chain">categories</result>
         </action>
         
-        <action name="bookmarks!*" method="{1}"
+        <action name="bookmarks"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Bookmarks">
             <result name="list" type="tiles">.Bookmarks</result>
         </action>
 
-        <action name="bookmarkAdd!*" method="{1}"
+        <action name="bookmarkAdd"
                 class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit">
             <param name="actionName">bookmarkAdd</param>
             <param name="pageTitle">bookmarkForm.add.title</param>
@@ -393,7 +464,7 @@
             <result name="error" type="chain">bookmarks</result>
         </action>
         
-        <action name="bookmarkEdit!*" method="{1}"
+        <action name="bookmarkEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit">
             <param name="actionName">bookmarkEdit</param>
             <param name="pageTitle">bookmarkForm.edit.title</param>
@@ -407,13 +478,13 @@
             <result name="error" type="chain">bookmarkEdit</result>
         </action>
         
-        <action name="bookmarksImport!*" method="{1}"
+        <action name="bookmarksImport"
                 class="org.apache.roller.weblogger.ui.struts2.editor.BookmarksImport">
             <result name="input" type="tiles">.BookmarksImport</result>
             <result name="success" type="chain">bookmarks</result>
         </action>
         
-        <action name="folderAdd!*" method="{1}"
+        <action name="folderAdd"
                 class="org.apache.roller.weblogger.ui.struts2.editor.FolderEdit">
             <param name="actionName">folderAdd</param>
             <param name="pageTitle">folderForm.add.title</param>
@@ -427,7 +498,7 @@
             <result name="error" type="chain">bookmarks</result>
         </action>
         
-        <action name="folderEdit!*" method="{1}"
+        <action name="folderEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.FolderEdit">
             <param name="actionName">folderEdit</param>
             <param name="pageTitle">folderForm.edit.title</param>
@@ -441,39 +512,42 @@
             <result name="error" type="chain">bookmarks</result>
         </action>
         
-        <action name="weblogConfig!*" method="{1}"
+        <action name="weblogConfig"
                 class="org.apache.roller.weblogger.ui.struts2.editor.WeblogConfig">
             <result name="input" type="tiles">.WeblogConfig</result>
         </action>
         
-        <action name="weblogRemove!*" method="{1}"
+        <action name="weblogRemove"
                 class="org.apache.roller.weblogger.ui.struts2.editor.WeblogRemove">
             <result name="confirm" type="tiles">.WeblogRemoveConfirm</result>
-            <result name="success" type="chain">menu</result>
+            <result name="success" type="chain">
+                <param name="actionName">menu</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
         </action>
         
-        <action name="themeEdit!*" method="{1}"
+        <action name="themeEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.ThemeEdit">
             <result name="input" type="tiles">.ThemeEdit</result>
         </action>
         
-        <action name="stylesheetEdit!*" method="{1}"
+        <action name="stylesheetEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.StylesheetEdit">
             <result name="input" type="tiles">.StylesheetEdit</result>
         </action>
         
-        <action name="templates!*" method="{1}"
+        <action name="templates"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Templates">
             <result name="list" type="tiles">.Templates</result>
         </action>
         
-        <action name="templateEdit!*" method="{1}"
+        <action name="templateEdit"
                 class="org.apache.roller.weblogger.ui.struts2.editor.TemplateEdit">
             <result name="list" type="chain">templates</result>
             <result name="input" type="tiles">.TemplateEdit</result>
         </action>
         
-        <action name="templateRemove!*" method="{1}"
+        <action name="templateRemove"
                 class="org.apache.roller.weblogger.ui.struts2.editor.TemplateRemove">
             <result name="confirm" type="tiles">.TemplateRemove</result>
             <result name="cancel" type="redirectAction">
@@ -483,7 +557,7 @@
             <result name="success" type="chain">templates</result>
         </action>
         
-        <action name="templatesRemove!*" method="{1}"
+        <action name="templatesRemove"
                 class="org.apache.roller.weblogger.ui.struts2.editor.TemplatesRemove">
             <result name="input" type="tiles">.TemplatesRemove</result>
             <result name="confirm" type="tiles">.TemplatesRemove</result>
@@ -495,15 +569,15 @@
             <result name="error" type="chain">templates</result>
         </action>
         
-        <action name="members!*" method="{1}"
+        <action name="members"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Members">
             <result name="list" type="tiles">.Members</result>
         </action>
         
-        <action name="invite!*" method="{1}"
+        <action name="invite"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MembersInvite">
             <result name="input" type="tiles">.MembersInvite</result>
-            <result name="disabled" type="tiles">.disabled</result>
+            <!-- <result name="disabled" type="tiles">.disabled</result> -->
             <result name="success" type="chain">members</result>
             <result name="cancel" type="redirectAction">
                 <param name="actionName">members</param>
@@ -511,19 +585,25 @@
             </result>
         </action>
 
-        <action name="memberResign!*" method="{1}"
+        <action name="memberResign"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MemberResign">
             <result name="input" type="tiles">.MemberResign</result>
-            <result name="error" type="chain">menu</result>
-            <result name="success" type="chain">menu</result>
+            <result name="error" type="chain">
+                <param name="actionName">menu</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
+            <result name="success" type="chain">
+                <param name="actionName">menu</param>
+                <param name="namespace">/roller-ui</param>
+            </result>
         </action>
 
-        <action name="pings!*" method="{1}"
+        <action name="pings"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Pings">
             <result name="list" type="tiles">.Pings</result>
         </action>
 
-        <action name="maintenance!*" method="{1}"
+        <action name="maintenance"
                 class="org.apache.roller.weblogger.ui.struts2.editor.Maintenance">
             <result name="success" type="tiles">.Maintenance</result>
         </action>
@@ -532,9 +612,13 @@
 
     <!-- Weblogger Authoring UI - overlay pages-->
     
-    <package name="weblogger-authoring-overlay" namespace="/roller-ui/authoring/overlay" extends="weblogger-authoring">
+    <package name="weblogger-authoring-overlay" namespace="/roller-ui/authoring/overlay" extends="weblogger-authoring" >
 
-        <action name="mediaFileAdd!*" method="{1}"
+        <global-allowed-methods>
+            execute,save
+        </global-allowed-methods>
+
+        <action name="mediaFileAdd"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileAdd">
             <param name="overlayMode">true</param>
             <result name="input" type="tiles">.MediaFileAddInclude</result>
@@ -542,7 +626,7 @@
             <result name="error" type="tiles">.MediaFileAddInclude</result>
         </action>
 
-	    <action name="mediaFileImageChooser!*" method="{1}"
+	    <action name="mediaFileImageChooser"
                 class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileImageChooser">
             <param name="overlayMode">true</param>
             <result name="input" type="tiles">.MediaFileImageChooser</result>
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
index 420cbd0..f518ac6 100644
--- a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
@@ -33,13 +33,13 @@
     <s:hidden name="bean.id" />
     
     <div class="formrow">
-        <label for="title" class="formrow" /><s:text name="planetGroups.title" /></label>
+        <label for="bean.title" class="formrow" /><s:text name="planetGroups.title" /></label>
         <s:textfield name="bean.title" size="40" maxlength="255" />
         <img src="<s:url value="/images/help.png"/>" alt="help" title='<s:text name="planetGroups.tip.title" />' />
     </div>
     
     <div class="formrow">
-        <label for="handle" class="formrow" /><s:text name="planetGroups.handle" /></label>
+        <label for="bean.handle" class="formrow" /><s:text name="planetGroups.handle" /></label>
         <s:textfield name="bean.handle" size="40" maxlength="255" />
         <img src="<s:url value="/images/help.png"/>" alt="help" title='<s:text name="planetGroups.tip.handle" />' />
     </div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp b/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
index e233946..2d615e5 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
@@ -42,19 +42,19 @@
 <table class="formtable">
 
 <tr>
-    <td class="label"><label for="name" /><s:text name="generic.name" /></label></td>
+    <td class="label"><label for="name"><s:text name="generic.name" /></label></td>
     <td class="field"><s:textfield name="bean.name" size="30" maxlength="30" /></td>
     <td class="description"><s:text name="createWebsite.tip.name" /></td>
 </tr>
 
 <tr>
-        <td class="label"><label for="description" /><s:text name="generic.tagline" /></td>
+        <td class="label"><label for="description"><s:text name="generic.tagline" /></td>
     <td class="field"><s:textfield name="bean.description" size="40" maxlength="255" /></td>
     <td class="description"><s:text name="createWebsite.tip.description" /></td>
 </tr>
 
 <tr>
-    <td class="label"><label for="handle" /><s:text name="createWebsite.handle" /></label></td>
+    <td class="label"><label for="handle"><s:text name="createWebsite.handle" /></label></td>
     <td class="field">
         <s:textfield name="bean.handle" size="30" maxlength="30" onkeyup="handlePreview(this)" /><br />
         <span style="text-size:70%">
@@ -66,7 +66,7 @@
 </tr>
 
 <tr>
-    <td class="label"><label for="emailAddress" /><s:text name="createWebsite.emailAddress" /></label></td>
+    <td class="label"><label for="emailAddress"><s:text name="createWebsite.emailAddress" /></label></td>
     <td class="field"><s:textfield name="bean.emailAddress" size="40" maxlength="50" /></td>
     <td class="description"><s:text name="createWebsite.tip.email" /></td>
 </tr>
@@ -80,7 +80,7 @@
 </tr>
 
 <tr>
-    <td class="label"><label for="timeZone" /><s:text name="createWebsite.timeZone" /></label></td>
+    <td class="label"><label for="timeZone"><s:text name="createWebsite.timeZone" /></label></td>
     <td class="field">
        <s:select name="bean.timeZone" size="1" list="timeZonesList" />
     </td>
@@ -88,7 +88,7 @@
 </tr>
 
 <tr>
-    <td class="label"><label for="theme" /><s:text name="createWebsite.theme" /></label></td>
+    <td class="label"><label for="theme"><s:text name="createWebsite.theme" /></label></td>
     <td class="field" ng-app="themeSelectModule" ng-controller="themeController">
         <select id="themeSelector" name="bean.theme" size="1"
         ng-model="selectedTheme" ng-options="theme as theme.name for theme in themes track by theme.id"></select>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp b/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
index 738e0ba..bf9914d 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
@@ -34,8 +34,6 @@
 }
 %>
 
-<p>L'utilisateur a été invité avec succés</p>
-
 <s:if test="authMethod == 'OPENID' || authMethod == 'DB_OPENID'">
     
     <p><s:text name="loginPage.openIdPrompt" /></p>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp b/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
index 76e83d7..eb565f8 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
@@ -20,7 +20,7 @@
 <%-- PROMPT: Welcome... you have no blog --%>
 <s:if test="existingPermissions.isEmpty && pendingPermissions.isEmpty"> 
     <p><s:text name="yourWebsites.prompt.noBlog" />
-    <a href="<s:url action="createWeblog"/>"><s:text name="yourWebsites.createOne" /></a></p>
+    <a id="createWeblogLink" href="<s:url action="createWeblog"/>"><s:text name="yourWebsites.createOne" /></a></p>
 </s:if>    
 
 <%-- PROMPT: You have invitation(s) --%>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp
index 58649a7..2bb3b35 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp
@@ -26,7 +26,7 @@
                 <h3><s:text name="weblogEdit.comments" /></h3>
 
                 <s:if test="bean.commentCount > 0">
-                    <s:url action="comments" id="commentsURL">
+                    <s:url action="comments" var="commentsURL">
                        <s:param name="bean.entryId" value="bean.id" />
                        <s:param name="weblog" value="weblog" />
                     </s:url>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
index 42f3b8e..1214149 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
@@ -80,7 +80,7 @@
 
         <%-- checkboxed list of images uploaded --%>
         <table class="mediaFileTable">
-            <s:iterator value="newImages" id="newImage">
+            <s:iterator value="newImages" var="newImage">
             <tr>
                 <td width="5%">
                     <%-- checkbox for file --%>
@@ -122,7 +122,7 @@
 
         <%-- checkboxed list of other files uploaded --%>
         <table class="mediaFileTable">
-            <s:iterator value="newFiles" id="newFile">
+            <s:iterator value="newFiles" var="newFile">
             <tr>
                 <td width="20%">
                     <%-- radio button for file --%>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
index 474e674..670eaa6 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
@@ -77,20 +77,23 @@
             </td>
        </tr>
 
-       <tr>
+        <tr>
             <td class="entryEditFormLabel">
-                <label for="status"><s:text name="mediaFileEdit.permalink" /></label>
+                <label for="status"><s:text name="mediaFileEdit.permalink"/></label>
             </td>
             <td>
-                <a href='<s:text name="bean.permalink" />' target="_blank"
+                <s:url var="linkIconURL" value="/images/link.png"></s:url>
+
+                <a href='<s:property value="bean.permalink" />' target="_blank"
                    title='<s:text name="mediaFileEdit.linkTitle" />'>
-                   <s:url var="linkIconURL" value="/images/link.png"></s:url>
-                   <img border="0" src='<s:property value="%{linkIconURL}" />'
-                       style="padding:2px 2px;" alt="link" />
+                    <img border="0" src='<s:property value="%{linkIconURL}" />' style="padding:2px 2px;" alt="link"/>
                 </a>
-                <input type="text" id="clip_text" size="50" style="width:90%" value='<s:text name="bean.permalink" />' readonly />
+
+                <input type="text" id="clip_text" size="50" style="width:90%"
+                       value='<s:property value="bean.permalink" />' readonly/>
+
             </td>
-       </tr>
+        </tr>
 
        <tr>
             <td class="entryEditFormLabel">
@@ -158,8 +161,8 @@
                 <label for="originalPath"><s:text name="mediaFileEdit.originalPath" /></label>
             </td>
             <td>
-                <div id="fileControldiv" class="miscControl">
-                    <s:textfield name="bean.originalPath" size="30" maxlength="100" tabindex="3" />
+                <div id="originalPathdiv" class="miscControl">
+                    <s:textfield name="bean.originalPath" id="originalPath" size="30" maxlength="100" tabindex="3" />
                     <br />
                 </div>
             </td>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
index eb90e11..163a869 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
@@ -209,7 +209,7 @@
 <s:else>
 
     <p class="subtitle">
-        <s:text name="mediaFileView.folderName"/>: <s:text name="currentDirectory.name" />
+        <s:text name="mediaFileView.folderName"/>: <s:property value="%{currentDirectory.name}" />
     </p>
     <p class="pagetip">
         <s:text name="mediaFileView.dirPageTip" />
diff --git a/assembly-release/pom.xml b/assembly-release/pom.xml
index 5d4281a..77dac0d 100644
--- a/assembly-release/pom.xml
+++ b/assembly-release/pom.xml
@@ -22,7 +22,7 @@
     <parent>
         <groupId>org.apache.roller</groupId>
         <artifactId>roller-project</artifactId>
-        <version>5.2.0-SNAPSHOT</version>
+        <version>5.2.0</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -33,7 +33,7 @@
     <description>Assembles Roller into a distribution package</description>
 
     <!--
-         Check the README.txt in the Roller base folder for 
+         Check the README.md in the Roller base folder for
          information on creating the Roller distribution files.
     -->
     <build>
diff --git a/assembly-release/sign-release.sh b/assembly-release/sign-release.sh
old mode 100644
new mode 100755
index a385590..77fdd59
--- a/assembly-release/sign-release.sh
+++ b/assembly-release/sign-release.sh
@@ -1,8 +1,18 @@
+#!/usr/bin/env bash
+
 export rcstring=""
 export vstring="5.2.0"
 
-gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.tar.gz
-gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.zip
+# for rc releases we rename the release files
+if [ rcstring != "" ]; then
+    mv target/roller-release-${vstring}-source.tar.gz   target/roller-release-${vstring}${rcstring}-source.tar.gz
+    mv target/roller-release-${vstring}-source.zip      target/roller-release-${vstring}${rcstring}-source.zip
+    mv target/roller-release-${vstring}-standard.tar.gz target/roller-release-${vstring}${rcstring}-standard.tar.gz
+    mv target/roller-release-${vstring}-standard.zip    target/roller-release-${vstring}${rcstring}-standard.zip
+fi
+
+gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.tar.gz 
+gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.zip 
 gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-source.tar.gz 
 gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-source.zip
 
diff --git a/assembly-release/src/main/assembly/source.xml b/assembly-release/src/main/assembly/source.xml
index aec3510..ea36aeb 100644
--- a/assembly-release/src/main/assembly/source.xml
+++ b/assembly-release/src/main/assembly/source.xml
@@ -30,19 +30,25 @@
 			</outputDirectory>
 			<directory>${project.basedir}/../</directory>
 			<includes>
-				<include>**</include>
+				<include>app/**</include>
+				<include>assembly-release/**</include>
+				<include>docs/**</include>
+				<include>it-selenium/**</include>
+				<include>LICENSE.txt</include>
+				<include>NOTICE.txt</include>
+				<include>pom.xml</include>
+				<include>README.md</include>
 			</includes>
 			<excludes>
-				<exclude>it-selenium/**</exclude>
 				<exclude>**/target/**</exclude>
-				<exclude>**/derby.log</exclude>
 				<exclude>**/.idea/**</exclude>
-				<exclude>**/._*</exclude>
-				<exclude>**/._*/**</exclude>
+				<exclude>**/.settings/**</exclude>
 				<exclude>**/.repository/**</exclude>
+				<exclude>**/.git</exclude>
 				<exclude>**/.classpath</exclude>
 				<exclude>**/.project</exclude>
-				<exclude>**/.settings/**</exclude>
+				<exclude>**/*.log</exclude>
+				<exclude>**/*.iml</exclude>
 			</excludes>
 		</fileSet>
 	</fileSets>
diff --git a/assembly-release/src/main/assembly/standard.xml b/assembly-release/src/main/assembly/standard.xml
index 12b5f71..2bec4cf 100644
--- a/assembly-release/src/main/assembly/standard.xml
+++ b/assembly-release/src/main/assembly/standard.xml
@@ -32,7 +32,7 @@
             <outputDirectory>${artifact.artifactId}-${artifact.version}/webapp</outputDirectory>
         </file> 
         <file> 
-            <source>../README.txt</source>
+            <source>../README.md</source>
             <outputDirectory>${artifact.artifactId}-${artifact.version}</outputDirectory>
         </file> 
         <file> 
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy b/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy
index bdf785b..280003a 100644
--- a/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy
+++ b/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy
@@ -133,19 +133,21 @@
         try {
             def website = new org.apache.roller.weblogger.pojos.Weblog(
                 handle, 
-                user,
+                user.getUserName(),
                 name,
                 desc,
                 user.getEmailAddress(),
-                user.getEmailAddress(),
                 theme,
                 user.getLocale(),
                 user.getTimeZone());
+            roller.getWeblogManager().addWeblog(website)
+            roller.flush()
+
             def cat = new org.apache.roller.weblogger.pojos.WeblogCategory(
-                website, null, "cat1", "cat1", null);
-            roller.getWeblogManager().saveWeblogCategory(cat);
-            website.setDefaultCategory(cat);
-            roller.getUserManager().addWebsite(website);
+                website, "cat1", "cat1", null);
+            roller.getWeblogEntryManager().saveWeblogCategory(cat);
+            //website.setDefaultCategory(cat);
+            roller.getUserManager().grantWeblogPermission(website, user, ["post", "admin"]);
             roller.flush();
             return website
         } catch (Exception e) {
@@ -158,17 +160,17 @@
         try {
             def entry = new org.apache.roller.weblogger.pojos.WeblogEntry();
             entry.setWebsite(blog);
-            entry.setCreator(blog.getCreator());
+            entry.setCreatorUserName(blog.getCreatorUserName());
             def catName = categories.get((int)(Math.random() * categories.size()))
-            def category = roller.getWeblogManager().getWeblogCategoryByPath(blog,catName)
+            def category = roller.getWeblogEntryManager().getWeblogCategoryByName(blog,catName)
             entry.setCategory(category);
-            entry.setPubTime(new java.sql.Timestamp(pubTime.getTime()));
-            entry.setUpdateTime(new java.sql.Timestamp(pubTime.getTime()));
-            entry.setStatus(org.apache.roller.weblogger.pojos.WeblogEntry.PUBLISHED);
+            entry.setPubTime( new java.sql.Timestamp(pubTime.getTime()));
+            entry.setUpdateTime( new java.sql.Timestamp(pubTime.getTime()));
+            entry.setStatus(org.apache.roller.weblogger.pojos.WeblogEntry.PubStatus.PUBLISHED);
             entry.setText(text);
             entry.setTitle(title);
             entry.setLocale("en_US");
-            roller.getWeblogManager().saveWeblogEntry(entry);
+            roller.getWeblogEntryManager().saveWeblogEntry(entry);
             roller.flush();
             return entry
         } catch (Exception e) {
@@ -185,8 +187,8 @@
             comment.setPostTime(new java.sql.Timestamp(new java.util.Date().getTime()));
             comment.setContent(content);
             comment.setNotify(Boolean.FALSE);
-            comment.setStatus(org.apache.roller.weblogger.pojos.WeblogEntryComment.APPROVED);
-            roller.getWeblogManager().saveComment(comment);
+            comment.setStatus(org.apache.roller.weblogger.pojos.WeblogEntryComment.ApprovalStatus.APPROVED);
+            roller.getWeblogEntryManager().saveComment(comment);
             roller.flush();
         } catch (Exception e) {
             e.printStackTrace()
@@ -205,12 +207,12 @@
         // drop any existing Roller tables
         ant.sql(onerror:"continue", driver:jdbcClass, url:jdbcUrl, 
             userid:jdbcUser, password:jdbcPassword,
-            src:"../../../../../apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/droptables.sql")   
+            src:"../../../../../../app/target/roller/WEB-INF/classes/dbscripts/droptables.sql")
         
         // create fresh set of Roller tables
         ant.sql(onerror:"continue", driver:jdbcClass, url:jdbcUrl, 
             userid:jdbcUser, password:jdbcPassword,
-            src:"../../../../../apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/derby/createdb.sql") 
+            src:"../../../../../../app/target/roller/WEB-INF/classes/dbscripts/mysql/createdb.sql")
 
         bootstrap()
 
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/groovy b/docs/examples/scripting/groovy/examples/rollerapi/groovy
index 62909ad..737484b 100755
--- a/docs/examples/scripting/groovy/examples/rollerapi/groovy
+++ b/docs/examples/scripting/groovy/examples/rollerapi/groovy
@@ -3,22 +3,22 @@
 # -- ENSURE THESE ARE CORRECT ---
 
 # Directory where Groovy release is installed
-export GROOVY_HOME=/Applications/Java/groovy
+export GROOVY_HOME=/Applications/Java/groovy-2.4.8
 
 # Directory of Roller webapp context
-export WEBAPP_DIR=../../../../../apps/weblogger/build/webapp
+export WEBAPP_DIR=../../../../../../app/target/roller
 
 # Directory of additional jars
-export JARS_DIR=/Applications/Java/tomcat/common/lib
+export JARS_DIR=/Applications/Java/lib
 
 
 # --- SHOULD NOT NEED TO EDIT BELOW THIS LINE ---
 
 RGPATH=${WEBAPP_DIR}/WEB-INF/classes:\
-${GROOVY_HOME}/embeddable/groovy-all-1.0.jar:\
-${GROOVY_HOME}/lib/commons-cli-1.0.jar:\
-${GROOVY_HOME}/lib/ant-1.6.5.jar:\
-${GROOVY_HOME}/lib/ant-launcher.1.6.5.jar
+${GROOVY_HOME}/embeddable/groovy-all-2.4.8.jar:\
+${GROOVY_HOME}/lib/commons-cli-1.2.jar:\
+${GROOVY_HOME}/lib/ant-1.9.4.jar:\
+${GROOVY_HOME}/lib/ant-launcher-1.9.4.jar
 
 for i in "$WEBAPP_DIR"/WEB-INF/lib/*.jar; do
   RGPATH="$RGPATH":"$i"
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy b/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy
index 6de967d..f908a6a 100644
--- a/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy
+++ b/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy
@@ -21,12 +21,12 @@
     org.apache.roller.weblogger.business.WebloggerFactory.bootstrap();
     roller = org.apache.roller.weblogger.business.WebloggerFactory.getWeblogger();
     
-    users = roller.getUserManager().getUsers(null, null, null, null, 0, -1);
+    users = roller.getUserManager().getUsers(null, null, null, 0, -1);
     for (u in users) {
        println "   User [${u.userName}] has password [${u.password}]";
-       weblogs = roller.getUserManager().getWebsites(u, null, null, null, null, 0, Integer.MAX_VALUE);
-       for (w in weblogs) {
-          println "      Belongs to weblog [${w.handle}]";
+        permissions = roller.getUserManager().getWeblogPermissions(u)
+       for (p in permissions) {
+          println "      Belongs to weblog [${p.getWeblog().getHandle()}]";
        }
     } 
 } catch (Exception e) {
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties b/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties
index 04317de..202603d 100644
--- a/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties
+++ b/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties
@@ -1,9 +1,9 @@
 
 database.configurationType=jdbc
-database.jdbc.driverClass=org.apache.derby.jdbc.ClientDriver
-database.jdbc.connectionURL=jdbc:derby://localhost:1527/roller40test;create=true
-database.jdbc.username=APP
-database.jdbc.password=APP
+database.jdbc.driverClass=com.mysql.jdbc.Driver
+database.jdbc.connectionURL=jdbc:mysql://localhost/roller520new?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf&useFastDateParsing=false
+database.jdbc.username=scott
+database.jdbc.password=tiger
 
 log4j.category.org.apache.roller=DEBUG
 
diff --git a/docs/roller-install-guide.odt b/docs/roller-install-guide.odt
index 608c279..39054c4 100644
--- a/docs/roller-install-guide.odt
+++ b/docs/roller-install-guide.odt
Binary files differ
diff --git a/docs/roller-template-guide.odt b/docs/roller-template-guide.odt
index 2f89f0a..56d8158 100644
--- a/docs/roller-template-guide.odt
+++ b/docs/roller-template-guide.odt
Binary files differ
diff --git a/docs/roller-user-guide.odt b/docs/roller-user-guide.odt
index b323775..1bf7d45 100644
--- a/docs/roller-user-guide.odt
+++ b/docs/roller-user-guide.odt
Binary files differ
diff --git a/it-selenium/pom.xml b/it-selenium/pom.xml
index f4f28d2..2854584 100644
--- a/it-selenium/pom.xml
+++ b/it-selenium/pom.xml
@@ -24,7 +24,7 @@
     <parent>
         <groupId>org.apache.roller</groupId>
         <artifactId>roller-project</artifactId>
-        <version>5.2.0-SNAPSHOT</version>
+        <version>5.2.0</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
@@ -32,11 +32,6 @@
     <artifactId>roller-selenium-tests</artifactId>
     <packaging>war</packaging>
 
-    <properties>
-        <selenium.version>2.47.1</selenium.version>
-        <javamail.version>1.4.7</javamail.version>
-    </properties>
-
     <!-- Process to run Selenium tests (actually no tests right now, just a skeleton)
          1. Tests presently require Firefox browser, Chrome on the to-do list.
 
@@ -49,27 +44,38 @@
          4. Feel free to add more Selenium tests!
     -->
     <dependencies>
+
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-java</artifactId>
-            <version>${selenium.version}</version>
+            <version>3.4.0</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.apache.commons</groupId>
+                    <artifactId>commons-lang3</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
+
         <dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-firefox-driver</artifactId>
-            <version>${selenium.version}</version>
+            <version>3.4.0</version>
         </dependency>
+
         <!-- Will bring in once we configure a Chrome option -->
         <!--dependency>
             <groupId>org.seleniumhq.selenium</groupId>
             <artifactId>selenium-chrome-driver</artifactId>
             <version>${selenium.version}</version>
         </dependency-->
+
         <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
             <scope>test</scope>
         </dependency>
+
         <!--
              Type "war" listed below makes this a WAR overlay (i.e., incorporating
              another WAR into this project in making a new WAR, with any additional
@@ -81,16 +87,22 @@
             <version>${project.version}</version>
             <type>war</type>
         </dependency>
+
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>
         <plugins>
-            <!-- Activates integration tests (by default, classes under tests
-                 that end with "IT")
+
+            <!-- Activates integration tests (by default, classes under tests that end with "IT")
             -->
             <plugin>
                 <artifactId>maven-failsafe-plugin</artifactId>
-                <version>2.12.4</version>
+                <version>2.20</version>
                 <executions>
                     <execution>
                         <goals>
@@ -100,6 +112,7 @@
                     </execution>
                 </executions>
             </plugin>
+
             <!-- Activates the Derby database during the integration test phase -->
             <plugin>
                 <groupId>com.btmatthews.maven.plugins.inmemdb</groupId>
@@ -135,6 +148,7 @@
                     </execution>
                 </executions>
             </plugin>
+
             <!-- Activates the Roller application during the integration test phase -->
             <plugin>
                 <groupId>org.eclipse.jetty</groupId>
@@ -163,7 +177,7 @@
                         </goals>
                         <configuration>
                             <scanIntervalSeconds>0</scanIntervalSeconds>
-                            <daemon>true</daemon>
+                            <!-- <daemon>true</daemon> -->
                         </configuration>
                     </execution>
                     <execution>
@@ -175,21 +189,25 @@
                     </execution>
                 </executions>
                 <dependencies>
+
                     <dependency>
                         <groupId>org.apache.derby</groupId>
                         <artifactId>derby</artifactId>
                         <version>${derby.version}</version>
                     </dependency>
+
                     <dependency>
                         <groupId>org.apache.derby</groupId>
                         <artifactId>derbyclient</artifactId>
                         <version>${derby.version}</version>
                     </dependency>
+
                     <dependency>
                         <groupId>javax.mail</groupId>
                         <artifactId>mail</artifactId>
-                        <version>${javamail.version}</version>
+                        <version>1.4.7</version>
                     </dependency>
+
                 </dependencies>
             </plugin>
         </plugins>
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java
index 5bd89a9..5bce387 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java
@@ -21,7 +21,9 @@
 import org.openqa.selenium.NoSuchElementException;
 import org.openqa.selenium.WebDriver;
 import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
 import org.openqa.selenium.support.ui.Select;
+import org.openqa.selenium.support.ui.WebDriverWait;
 
 /**
  * Abstract class holding functionality common to Selenium Page Objects
@@ -30,13 +32,21 @@
 public abstract class AbstractRollerPage {
 
     protected WebDriver driver;
-    protected String pageName;
+
+    protected void verifyPageTitle(String waitForElementId, String pageTitle) {
+
+        WebDriverWait wait = new WebDriverWait(driver, 10);
+        wait.until( ExpectedConditions.visibilityOf( driver.findElement(By.id(waitForElementId))));
+
+        verifyPageTitle(pageTitle);
+    }
 
     protected void verifyPageTitle(String pageTitle) {
-        if(!driver.getTitle().equals(pageTitle)) {
-            throw new IllegalStateException("This is not the " + pageName + ", current page is: "
-                    + driver.getTitle());
+
+        if (!driver.getTitle().equals(pageTitle)) {
+            throw new IllegalStateException("This is not the " + pageTitle + ", current page is: " + driver.getTitle());
         }
+        System.out.println("Verified page title: " + pageTitle);
     }
 
     /*
@@ -48,8 +58,7 @@
         try {
             WebElement div = driver.findElement(By.id(idOnPage));
         } catch (NoSuchElementException e) {
-            throw new IllegalStateException("This is not the " + pageName + ", HTML ID: "
-                    + idOnPage + " not found.");
+            throw new IllegalStateException("HTML ID: " + idOnPage + " not found.");
         }
     }
 
@@ -60,11 +69,15 @@
     }
 
     protected void clickById(String buttonId) {
-        driver.findElement(By.id(buttonId)).click();
+        WebElement element = driver.findElement(By.id(buttonId));
+        element.click();
+        System.out.println("Element " + element.getTagName() + " id:" + element.getAttribute("id") + " clicked");
     }
 
     protected void clickByLinkText(String buttonText) {
-        driver.findElement(By.linkText(buttonText)).click();
+        WebElement element = driver.findElement(By.linkText(buttonText));
+        element.click();
+        System.out.println("Element " + element.getTagName() + " id:" + element.getAttribute("id") + " clicked");
     }
 
     protected String getTextByCSS(String cssSelector) {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java b/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java
index 2c5f019..15d521d 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java
@@ -62,10 +62,12 @@
         LoginPage lp = wp.doRollerLogin();
         MainMenuPage mmp = lp.loginToRoller("bsmith", "roller123");
         CreateWeblogPage cwp = mmp.createWeblog();
-        mmp = cwp.createWeblog("Bob's Blog", "bobsblog", "bsmith@email.com");
+        cwp.createWeblog("Bob's Blog", "bobsblog", "bsmith@email.com");
 
         // set bobsblog as the front page blog
         driver.get(baseUrl);
+        sp = new SetupPage(driver);
+        driver.navigate().refresh();
         BlogHomePage bhp = sp.chooseFrontPageBlog();
 
         // create and read first blog entry
@@ -84,7 +86,6 @@
 
     @After
     public void tearDown() throws Exception {
-        driver.quit();
         String verificationErrorString = verificationErrors.toString();
         if (!"".equals(verificationErrorString)) {
             fail(verificationErrorString);
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java
index 1c0a75a..19db6cb 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java
@@ -31,8 +31,8 @@
 
     public CreateWeblogPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "Create Weblog Page";
-        verifyPageTitle("Front Page: Create Weblog");
+        String pageTitle = "Front Page: Create Weblog";
+        verifyPageTitle("createWeblog", pageTitle);
     }
 
     public MainMenuPage createWeblog() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java
index e3834b9..6d90ae8 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java
@@ -30,8 +30,8 @@
 
     public LoginPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "Roller Login Page";
-        verifyPageTitle("Front Page: Welcome to Roller");
+        String pageTitle = "Front Page: Welcome to Roller";
+        verifyPageTitle("loginForm", pageTitle);
     }
 
     public MainMenuPage loginToRoller() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java
index 1eb4e00..1c3ba96 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java
@@ -28,19 +28,21 @@
  * Post-login page object to create, choose, configure blogs.
  */
 public class MainMenuPage extends AbstractRollerPage {
+    String pageTitle;
 
     public MainMenuPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "Main Menu Page";
-        verifyPageTitle("Front Page: Main Menu");
+        pageTitle = "Front Page: Main Menu";
     }
 
     public CreateWeblogPage createWeblog() {
+        verifyPageTitle("createWeblogLink", pageTitle);
         clickByLinkText("create one?");
         return new CreateWeblogPage(driver);
     }
 
     public EntryAddPage createNewBlogEntry() {
+        verifyPageTitle("createWeblogLink", pageTitle);
         clickByLinkText("New Entry");
         return new EntryAddPage(driver);
     }
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java
index 38cab2c..0d85498 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java
@@ -18,7 +18,10 @@
 package org.apache.roller.selenium.core;
 
 import org.apache.roller.selenium.AbstractRollerPage;
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
 
 import java.lang.String;
 
@@ -30,12 +33,18 @@
 
     public RegisterPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "New User Registration Page";
-        verifyPageTitle("Front Page: New User Registration");
+        String pageTitle = "Front Page: New User Registration";
+
+        verifyPageTitle("register", pageTitle);
     }
 
     public WelcomePage submitUserRegistration() {
         clickById("submit");
+
+        WebDriverWait wait = new WebDriverWait(driver, 10);
+        wait.until( ExpectedConditions.visibilityOf( driver.findElement(By.id("a_clickHere"))));
+        driver.findElement(By.id("a_clickHere")).click();
+
         return new WelcomePage(driver);
     }
 
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java
index 2328095..7422235 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java
@@ -19,7 +19,12 @@
 
 import org.apache.roller.selenium.AbstractRollerPage;
 import org.apache.roller.selenium.view.BlogHomePage;
+import org.openqa.selenium.By;
 import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.util.concurrent.TimeUnit;
 
 /**
  * represents core/Setup.jsp
@@ -32,16 +37,16 @@
 
     public SetupPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "Initial Setup Page";
-        verifyPageTitle("Front Page: Welcome to Roller!");
     }
 
     public RegisterPage createNewUser() {
+        verifyPageTitle("Front Page: Welcome to Roller!");
         clickById("a_createUser");
         return new RegisterPage(driver);
     }
 
     public BlogHomePage chooseFrontPageBlog() {
+        verifyPageTitle("setup_0", "Front Page: Welcome to Roller!");
         clickById("setup_0");
         return new BlogHomePage(driver);
     }
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java
index 1f64d87..87bafdf 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java
@@ -32,12 +32,11 @@
 
     public WelcomePage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "New User Registration Welcome Page";
-        verifyPageTitle("Front Page: New User Registration");
+        String pageTitle = "Front Page: Welcome to Roller";
+        verifyPageTitle("loginForm", pageTitle);
     }
 
     public LoginPage doRollerLogin() {
-        clickById("a_clickHere");
         return new LoginPage(driver);
     }
 
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java
index 5f9319a..d58c2a3 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java
@@ -29,8 +29,7 @@
 
     public EntryAddPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "New Blog Entry Page";
-        verifyPageTitle("Front Page: New Entry");
+        verifyPageTitle("entry", "Front Page: New Entry");
     }
 
 }
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java
index 1a3fd28..09bf6a7 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java
@@ -32,8 +32,7 @@
 
     public EntryEditPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "blog entry edit page";
-        verifyPageTitle("Front Page: Edit Entry");
+        verifyPageTitle("messages", "Front Page: Edit Entry");
     }
 
     public SingleBlogEntryPage viewBlogEntry() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java b/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java
index 2ec2a98..2fc4140 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java
@@ -31,8 +31,7 @@
 
     public BlogHomePage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "blog home page";
-        verifyIdOnPage("id_weblog");
+        verifyPageTitle("searchForm", "Bob's Blog");
     }
 
     public EntryAddPage createNewBlogEntry() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java
index 595977f..0660e40 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java
@@ -30,7 +30,7 @@
 
     public SingleBlogEntryPage(WebDriver driver) {
         this.driver = driver;
-        this.pageName = "Single blog entry view";
+        String pageTitle = "Single blog entry view";
         /* id_permalink added to basic template's permalink.vm only to distinguish
            this page from by-month or by-day views of blog entries */
         verifyIdOnPage("id_permalink");
diff --git a/it-selenium/src/test/resources/roller-jettyrun.properties b/it-selenium/src/test/resources/roller-jettyrun.properties
index 771de23..643e0c5 100644
--- a/it-selenium/src/test/resources/roller-jettyrun.properties
+++ b/it-selenium/src/test/resources/roller-jettyrun.properties
@@ -23,7 +23,7 @@
 passwds.encryption.enabled=false
 
 # use src copy of themes for read-only access
-themes.dir=target/roller-selenium-tests-5.2.0-SNAPSHOT/themes
+themes.dir=target/roller-selenium-tests-5.2.0/themes
 
 # put work in work dir
 search.index.dir          =target/work/search-index
diff --git a/pom.xml b/pom.xml
index 475ec4e..408d530 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,3 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements.  See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+-->
 <project xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -5,7 +22,7 @@
     <modelVersion>4.0.0</modelVersion>
     <groupId>org.apache.roller</groupId>
     <artifactId>roller-project</artifactId>
-    <version>5.2.0-SNAPSHOT</version>
+    <version>5.2.0</version>
     <packaging>pom</packaging>
 
     <prerequisites>
@@ -21,20 +38,21 @@
     <inceptionYear>2002</inceptionYear>
 
     <scm>
-        <connection>scm:svn:http://svn.apache.org/repos/asf/roller/trunk</connection>
-        <developerConnection>scm:svn:https://svn.apache.org/repos/asf/roller/trunk</developerConnection>
-        <url>http://svn.apache.org/viewvc/roller/trunk</url>
+        <url>https://github.com/apache/roller</url>
+        <connection>scm:git:git://github.com/apache/roller.git</connection>
+        <developerConnection>scm:git:git@github.com:apache/roller.git</developerConnection>
     </scm>
 
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
         <derby.version>10.11.1.1</derby.version>
-        <roller.version>5.2.0-SNAPSHOT</roller.version>
+        <roller.version>5.2.0</roller.version>
     </properties>
 
     <modules>
         <module>app</module>
+        <!-- <module>it-selenium</module> -->
     </modules>
 
     <build>
