diff --git a/tiles-autotag/tiles-autotag-freemarker-runtime/src/test/java/org/apache/tiles/autotag/freemarker/runtime/FreemarkerAutotagRuntimeTest.java b/tiles-autotag/tiles-autotag-freemarker-runtime/src/test/java/org/apache/tiles/autotag/freemarker/runtime/FreemarkerAutotagRuntimeTest.java
index db31177..39fc1a4 100644
--- a/tiles-autotag/tiles-autotag-freemarker-runtime/src/test/java/org/apache/tiles/autotag/freemarker/runtime/FreemarkerAutotagRuntimeTest.java
+++ b/tiles-autotag/tiles-autotag-freemarker-runtime/src/test/java/org/apache/tiles/autotag/freemarker/runtime/FreemarkerAutotagRuntimeTest.java
@@ -33,10 +33,10 @@
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.tiles.autotag.core.runtime.ModelBody;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.Request;
 import org.apache.tiles.request.freemarker.FreemarkerRequest;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Test;
 import freemarker.core.Environment;
 import freemarker.core.Macro;
@@ -57,7 +57,7 @@
  * @version $Rev$ $Date$
  */
 public class FreemarkerAutotagRuntimeTest {
-    
+
     @Test
     public void testCreateRequest() throws IOException, TemplateModelException{
         @SuppressWarnings("unchecked")
@@ -103,11 +103,11 @@
         Request request = runtime.createRequest();
         assertTrue(request instanceof FreemarkerRequest);
         verify(servlet, wrapper, servletContext, applicationContext,
-                httpServletRequest, httpServletResponse, 
-                template, rootDataModel, out, 
+                httpServletRequest, httpServletResponse,
+                template, rootDataModel, out,
                 params, body);
     }
-    
+
     @Test
     public void testCreateModelBody() {
         Template template = createMock(Template.class);
@@ -126,7 +126,7 @@
         assertTrue(modelBody instanceof FreemarkerModelBody);
         verify(template, rootDataModel, out, params, body);
     }
-    
+
     @Test
     public void testGetParameter() throws TemplateModelException {
         Template template = createMock(Template.class);
@@ -153,6 +153,6 @@
         assertEquals(null, nullParam);
         assertEquals(42, notnullParamDefault);
         assertEquals(24, nullParamDefault);
-        verify(template, rootDataModel, out, model, params, body);        
+        verify(template, rootDataModel, out, model, params, body);
     }
 }
diff --git a/tiles-autotag/tiles-autotag-jsp-runtime/src/test/java/org/apache/tiles/autotag/jsp/runtime/JspAutotagRuntimeTest.java b/tiles-autotag/tiles-autotag-jsp-runtime/src/test/java/org/apache/tiles/autotag/jsp/runtime/JspAutotagRuntimeTest.java
index d7eedd1..42df5d2 100644
--- a/tiles-autotag/tiles-autotag-jsp-runtime/src/test/java/org/apache/tiles/autotag/jsp/runtime/JspAutotagRuntimeTest.java
+++ b/tiles-autotag/tiles-autotag-jsp-runtime/src/test/java/org/apache/tiles/autotag/jsp/runtime/JspAutotagRuntimeTest.java
@@ -12,10 +12,10 @@
 import javax.servlet.jsp.tagext.JspTag;
 
 import org.apache.tiles.autotag.core.runtime.ModelBody;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.Request;
 import org.apache.tiles.request.jsp.JspRequest;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Test;
 
 public class JspAutotagRuntimeTest {
diff --git a/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java b/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
index 41c91c6..41f7595 100644
--- a/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
+++ b/tiles-autotag/tiles-autotag-velocity-runtime/src/test/java/org/apache/tiles/autotag/velocity/runtime/VelocityAutotagRuntimeTest.java
@@ -8,9 +8,9 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import org.apache.tiles.autotag.core.runtime.ModelBody;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.Request;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.apache.tiles.request.velocity.VelocityRequest;
 import org.apache.velocity.context.InternalContextAdapter;
 import org.apache.velocity.runtime.parser.node.ASTBlock;
diff --git a/tiles-parent/tiles-core/src/main/java/org/apache/tiles/startup/AbstractTilesInitializer.java b/tiles-parent/tiles-core/src/main/java/org/apache/tiles/startup/AbstractTilesInitializer.java
index 36b4450..b844d88 100644
--- a/tiles-parent/tiles-core/src/main/java/org/apache/tiles/startup/AbstractTilesInitializer.java
+++ b/tiles-parent/tiles-core/src/main/java/org/apache/tiles/startup/AbstractTilesInitializer.java
@@ -24,9 +24,9 @@
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.access.TilesAccess;
 import org.apache.tiles.factory.AbstractTilesContainerFactory;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.scope.ReflectionContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 
 /**
  * Default Tiles initialization delegate implementation under a servlet
diff --git a/tiles-parent/tiles-core/src/test/java/org/apache/tiles/startup/AbstractTilesInitializerTest.java b/tiles-parent/tiles-core/src/test/java/org/apache/tiles/startup/AbstractTilesInitializerTest.java
index 143d69f..4fab66d 100644
--- a/tiles-parent/tiles-core/src/test/java/org/apache/tiles/startup/AbstractTilesInitializerTest.java
+++ b/tiles-parent/tiles-core/src/test/java/org/apache/tiles/startup/AbstractTilesInitializerTest.java
@@ -29,9 +29,9 @@
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.access.TilesAccess;
 import org.apache.tiles.factory.AbstractTilesContainerFactory;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.scope.ReflectionContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tiles-parent/tiles-el/src/main/java/org/apache/tiles/el/JspExpressionFactoryFactory.java b/tiles-parent/tiles-el/src/main/java/org/apache/tiles/el/JspExpressionFactoryFactory.java
index 2d038d0..b663a3c 100644
--- a/tiles-parent/tiles-el/src/main/java/org/apache/tiles/el/JspExpressionFactoryFactory.java
+++ b/tiles-parent/tiles-el/src/main/java/org/apache/tiles/el/JspExpressionFactoryFactory.java
@@ -26,7 +26,7 @@
 import javax.servlet.jsp.JspFactory;
 
 import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationContextAware;
+import org.apache.tiles.request.ApplicationContextAware;
 
 /**
  * Uses the JSP 2.1 {@link ExpressionFactory} to be used in Tiles.
diff --git a/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java b/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java
index 40e4100..5985678 100644
--- a/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java
+++ b/tiles-parent/tiles-jsp/src/test/java/org/apache/tiles/jsp/taglib/UseAttributeTagTest.java
@@ -40,10 +40,10 @@
 import org.apache.tiles.AttributeContext;
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.jsp.JspRequest;
 import org.apache.tiles.request.scope.ReflectionContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
@@ -69,8 +69,8 @@
 
     /**
      * Test method for {@link org.apache.tiles.jsp.taglib.UseAttributeTag#execute(org.apache.tiles.request.Request)}.
-     * @throws IOException 
-     * @throws JspException 
+     * @throws IOException
+     * @throws JspException
      */
     @Test
     public void testExecute() throws JspException, IOException {
@@ -97,8 +97,8 @@
         expect(attributeContext.getAttribute("name")).andReturn(attribute);
         expect(container.evaluate(isA(Attribute.class), isA(JspRequest.class))).andReturn(new Integer(1));
         pageContext.setAttribute("id", new Integer(1), PageContext.PAGE_SCOPE);
-        replay(jspBody, pageContext, parent, 
-               applicationContext, httpServletRequest, httpServletResponse, 
+        replay(jspBody, pageContext, parent,
+               applicationContext, httpServletRequest, httpServletResponse,
                applicationScope, container, attributeContext, attribute);
         tag.setName("name");
         tag.setScope("page");
@@ -108,8 +108,8 @@
         tag.setJspBody(jspBody);
         tag.setParent(parent);
         tag.doTag();
-        verify(jspBody, pageContext, parent, 
-               applicationContext, httpServletRequest, httpServletResponse, 
+        verify(jspBody, pageContext, parent,
+               applicationContext, httpServletRequest, httpServletResponse,
                container, attributeContext, attribute);
     }
 
diff --git a/tiles-parent/tiles-servlet/src/test/java/org/apache/tiles/web/util/TilesDecorationFilterTest.java b/tiles-parent/tiles-servlet/src/test/java/org/apache/tiles/web/util/TilesDecorationFilterTest.java
index c80fbe8..6b1e411 100644
--- a/tiles-parent/tiles-servlet/src/test/java/org/apache/tiles/web/util/TilesDecorationFilterTest.java
+++ b/tiles-parent/tiles-servlet/src/test/java/org/apache/tiles/web/util/TilesDecorationFilterTest.java
@@ -34,11 +34,11 @@
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.AttributeContext;
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.servlet.ServletRequest;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
diff --git a/tiles-parent/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/VelocityStyleTilesToolTest.java b/tiles-parent/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/VelocityStyleTilesToolTest.java
index bbb27c5..3d819b9 100644
--- a/tiles-parent/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/VelocityStyleTilesToolTest.java
+++ b/tiles-parent/tiles-velocity/src/test/java/org/apache/tiles/velocity/template/VelocityStyleTilesToolTest.java
@@ -44,9 +44,9 @@
 import org.apache.tiles.Expression;
 import org.apache.tiles.TilesContainer;
 import org.apache.tiles.access.TilesAccess;
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.scope.ContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.apache.tiles.request.velocity.VelocityRequest;
 import org.apache.velocity.context.Context;
 import org.apache.velocity.context.InternalContextAdapter;
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractClientRequest.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractClientRequest.java
index 442984b..23efd77 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractClientRequest.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractClientRequest.java
@@ -24,7 +24,6 @@
 import java.util.Map;
 
 import org.apache.tiles.request.scope.ContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 
 /**
  * Base class for "client" requests, i.e. requests that come unchanged by the
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractViewRequest.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractViewRequest.java
index 96598b3..b3282d9 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractViewRequest.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/AbstractViewRequest.java
@@ -22,7 +22,6 @@
 
 import java.io.IOException;
 
-import org.apache.tiles.request.util.DispatchRequestWrapper;
 
 /**
  * Base class for "view" requests, i.e. requests created into view technologies,
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationAccess.java
similarity index 95%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationAccess.java
index 777d108..ba69e19 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationAccess.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationAccess.java
@@ -18,15 +18,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
-import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.scope.ContextResolver;
 
 /**
  * Entry point to get information about the application.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 1064782 $ $Date: 2011-01-28 18:08:52 +0100 (Fri, 28 Jan 2011) $
  */
 public final class ApplicationAccess {
 
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextAware.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextAware.java
similarity index 91%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextAware.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextAware.java
index 0e807d6..701a6fd 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextAware.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextAware.java
@@ -18,15 +18,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
-import org.apache.tiles.request.ApplicationContext;
 
 /**
  * It represents an object that can have a reference to the
  * {@link ApplicationContext}.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 893303 $ $Date: 2009-12-22 21:18:35 +0100 (Tue, 22 Dec 2009) $
  * @since 2.1.0
  */
 public interface ApplicationContextAware {
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextWrapper.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextWrapper.java
similarity index 94%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextWrapper.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextWrapper.java
index 680b2ea..2105090 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/ApplicationContextWrapper.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/ApplicationContextWrapper.java
@@ -18,20 +18,19 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
 import java.io.IOException;
 import java.net.URL;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.tiles.request.ApplicationContext;
 
 /**
  * Delegate for ease of customization.
  *
  * @since Tiles 2.1.1
- * @version $Rev$ $Date$
+ * @version $Rev: 933750 $ $Date: 2010-04-13 21:16:06 +0200 (Tue, 13 Apr 2010) $
  */
 public class ApplicationContextWrapper implements ApplicationContext {
 
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/DefaultRequestWrapper.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/DefaultRequestWrapper.java
similarity index 95%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/DefaultRequestWrapper.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/DefaultRequestWrapper.java
index f66755b..89a4ecf 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/DefaultRequestWrapper.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/DefaultRequestWrapper.java
@@ -19,7 +19,7 @@
  * under the License.
  */
 
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -28,8 +28,6 @@
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.Request;
 import org.apache.tiles.request.attribute.Addable;
 import org.apache.tiles.request.scope.ContextResolver;
 
@@ -37,7 +35,7 @@
  * Delegate for ease of customization.
  *
  * @since Tiles 2.0
- * @version $Rev$ $Date$
+ * @version $Rev: 1215009 $ $Date: 2011-12-16 01:32:31 +0100 (Fri, 16 Dec 2011) $
  */
 public class DefaultRequestWrapper implements RequestWrapper {
 
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/DispatchRequestWrapper.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/DispatchRequestWrapper.java
similarity index 94%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/DispatchRequestWrapper.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/DispatchRequestWrapper.java
index a643b5e..58d7fc8 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/DispatchRequestWrapper.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/DispatchRequestWrapper.java
@@ -18,7 +18,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
 import java.io.IOException;
 import java.io.OutputStream;
@@ -27,9 +27,6 @@
 import java.util.Locale;
 import java.util.Map;
 
-import org.apache.tiles.request.AbstractRequest;
-import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.DispatchRequest;
 import org.apache.tiles.request.attribute.Addable;
 import org.apache.tiles.request.scope.ContextResolver;
 
@@ -37,7 +34,7 @@
  * Delegate for ease of customization.
  *
  * @since Tiles 2.0
- * @version $Rev$ $Date$
+ * @version $Rev: 1215009 $ $Date: 2011-12-16 01:32:31 +0100 (Fri, 16 Dec 2011) $
  */
 public class DispatchRequestWrapper extends AbstractRequest implements
         RequestWrapper {
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestWrapper.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestWrapper.java
similarity index 90%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestWrapper.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestWrapper.java
index ebee8be..096bb21 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestWrapper.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/RequestWrapper.java
@@ -18,15 +18,14 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
-import org.apache.tiles.request.Request;
 
 /**
  * Delegate for ease of customization.
  *
  * @since Tiles 2.0
- * @version $Rev$ $Date$
+ * @version $Rev: 1215002 $ $Date: 2011-12-16 01:27:17 +0100 (Fri, 16 Dec 2011) $
  */
 public interface RequestWrapper extends Request {
 
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/CollectionUtil.java
similarity index 89%
rename from tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java
rename to tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/CollectionUtil.java
index fab981d..5d68e23 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/RequestUtil.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/CollectionUtil.java
@@ -18,21 +18,21 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request.collection;
 
 import java.util.Enumeration;
 
 /**
  * Utilities for requests.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 1064782 $ $Date: 2011-01-28 18:08:52 +0100 (Fri, 28 Jan 2011) $
  */
-public final class RequestUtil {
+public final class CollectionUtil {
 
     /**
      * Constructor.
      */
-    private RequestUtil() {
+    private CollectionUtil() {
 
     }
 
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java
index 3241d39..3a0f8d2 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/HeaderValuesMap.java
@@ -20,7 +20,7 @@
  */
 package org.apache.tiles.request.collection;
 
-import static org.apache.tiles.request.util.RequestUtil.*;
+import static org.apache.tiles.request.collection.CollectionUtil.*;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java
index e305d12..b029b54 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/KeySet.java
@@ -20,7 +20,7 @@
  */
 package org.apache.tiles.request.collection;
 
-import static org.apache.tiles.request.util.RequestUtil.*;
+import static org.apache.tiles.request.collection.CollectionUtil.*;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
index eb26b1c..95cbd1b 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ReadOnlyEnumerationMap.java
@@ -20,7 +20,7 @@
  */
 package org.apache.tiles.request.collection;
 
-import static org.apache.tiles.request.util.RequestUtil.*;
+import static org.apache.tiles.request.collection.CollectionUtil.*;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java
index e9197c6..1430f80 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/RemovableKeySet.java
@@ -20,7 +20,7 @@
  */
 package org.apache.tiles.request.collection;
 
-import static org.apache.tiles.request.util.RequestUtil.*;
+import static org.apache.tiles.request.collection.CollectionUtil.*;
 
 import java.util.Collection;
 import java.util.Enumeration;
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java
index 6a2cdf7..93465ea 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/collection/ScopeMap.java
@@ -20,7 +20,7 @@
  */
 package org.apache.tiles.request.collection;
 
-import static org.apache.tiles.request.util.RequestUtil.*;
+import static org.apache.tiles.request.collection.CollectionUtil.*;
 
 import java.util.Collection;
 import java.util.Enumeration;
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java
index cb7db68..1d6fcaa 100644
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java
+++ b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/scope/ReflectionContextResolver.java
@@ -28,7 +28,7 @@
 import java.util.Set;
 
 import org.apache.tiles.request.Request;
-import org.apache.tiles.request.util.RequestWrapper;
+import org.apache.tiles.request.RequestWrapper;
 
 /**
  * Resolves scopes and contexts by using reflection.
diff --git a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/package-info.java b/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/package-info.java
deleted file mode 100644
index 1c53932..0000000
--- a/tiles-request/tiles-request-api/src/main/java/org/apache/tiles/request/util/package-info.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * $Id$
- *
- * 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.
- */
-/**
- * Utilities to access requests and application contexts.
- */
-package org.apache.tiles.request.util;
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractClientRequestTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractClientRequestTest.java
index f78229b..1d11153 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractClientRequestTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractClientRequestTest.java
@@ -28,7 +28,6 @@
 import java.util.Map;
 
 import org.apache.tiles.request.scope.ContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractViewRequestTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractViewRequestTest.java
index 80321c7..26e3a30 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractViewRequestTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/AbstractViewRequestTest.java
@@ -28,7 +28,6 @@
 import java.util.Map;
 
 import org.apache.tiles.request.scope.ContextResolver;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/ApplicationAccessTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationAccessTest.java
similarity index 95%
rename from tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/ApplicationAccessTest.java
rename to tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationAccessTest.java
index b57d2f2..5ca56c2 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/ApplicationAccessTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationAccessTest.java
@@ -18,8 +18,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
+import org.apache.tiles.request.ApplicationAccess;
 import static org.junit.Assert.*;
 import static org.easymock.EasyMock.*;
 
@@ -32,7 +33,7 @@
 /**
  * Tests {@link ApplicationAccess}.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 1066446 $ $Date: 2011-02-02 13:38:04 +0100 (Wed, 02 Feb 2011) $
  */
 public class ApplicationAccessTest {
 
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/ApplicationContextWrapperTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationContextWrapperTest.java
similarity index 84%
rename from tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/ApplicationContextWrapperTest.java
rename to tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationContextWrapperTest.java
index 3caf363..4f896f6 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/ApplicationContextWrapperTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/ApplicationContextWrapperTest.java
@@ -18,8 +18,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
+import org.apache.tiles.request.ApplicationContextWrapper;
 import static org.easymock.EasyMock.*;
 import static org.easymock.classextension.EasyMock.*;
 import static org.junit.Assert.*;
@@ -35,12 +36,12 @@
 /**
  * Tests {@link ApplicationContextWrapper}.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 1066446 $ $Date: 2011-02-02 13:38:04 +0100 (Wed, 02 Feb 2011) $
  */
 public class ApplicationContextWrapperTest {
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.ApplicationContextWrapper#getWrappedApplicationContext()}.
+     * Test method for {@link org.apache.tiles.request.ApplicationContextWrapper#getWrappedApplicationContext()}.
      */
     @Test
     public void testGetWrappedApplicationContext() {
@@ -53,7 +54,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.ApplicationContextWrapper#getApplicationScope()}.
+     * Test method for {@link org.apache.tiles.request.ApplicationContextWrapper#getApplicationScope()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -70,7 +71,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.ApplicationContextWrapper#getContext()}.
+     * Test method for {@link org.apache.tiles.request.ApplicationContextWrapper#getContext()}.
      */
     @Test
     public void testGetContext() {
@@ -86,7 +87,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.ApplicationContextWrapper#getInitParams()}.
+     * Test method for {@link org.apache.tiles.request.ApplicationContextWrapper#getInitParams()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -103,7 +104,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.ApplicationContextWrapper#getResource(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.ApplicationContextWrapper#getResource(java.lang.String)}.
      * @throws IOException If something goes wrong.
      */
     @Test
@@ -120,7 +121,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.ApplicationContextWrapper#getResources(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.ApplicationContextWrapper#getResources(java.lang.String)}.
      * @throws IOException If something goes wrong.
      */
     @SuppressWarnings("unchecked")
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/DefaultRequestWrapperTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/DefaultRequestWrapperTest.java
similarity index 85%
rename from tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/DefaultRequestWrapperTest.java
rename to tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/DefaultRequestWrapperTest.java
index 58e3766..90e4a55 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/DefaultRequestWrapperTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/DefaultRequestWrapperTest.java
@@ -18,8 +18,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
+import org.apache.tiles.request.RequestWrapper;
+import org.apache.tiles.request.ApplicationAccess;
+import org.apache.tiles.request.DefaultRequestWrapper;
 import static org.easymock.EasyMock.expect;
 import static org.easymock.classextension.EasyMock.createMock;
 import static org.easymock.classextension.EasyMock.replay;
@@ -45,7 +48,7 @@
 /**
  * Tests {@link DefaultRequestWrapper}.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 1215009 $ $Date: 2011-12-16 01:32:31 +0100 (Fri, 16 Dec 2011) $
  */
 public class DefaultRequestWrapperTest {
 
@@ -71,7 +74,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getWrappedRequest()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getWrappedRequest()}.
      */
     @Test
     public void testGetWrappedRequest() {
@@ -84,7 +87,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getHeader()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getHeader()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -101,7 +104,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getResponseHeaders()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getResponseHeaders()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -118,7 +121,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getHeaderValues()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getHeaderValues()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -135,7 +138,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getContext(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getContext(java.lang.String)}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -159,7 +162,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getNativeScopes()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getNativeScopes()}.
      */
     @Test
     public void testGetNativeScopes() {
@@ -172,7 +175,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getAvailableScopes()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getAvailableScopes()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -197,7 +200,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getApplicationContext()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getApplicationContext()}.
      */
     @Test
     public void testGetApplicationContext() {
@@ -213,7 +216,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getOutputStream()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getOutputStream()}.
      * @throws IOException If something goes wrong.
      */
     @Test
@@ -230,7 +233,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getWriter()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getWriter()}.
      * @throws IOException If something goes wrong.
      */
     @Test
@@ -247,7 +250,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getPrintWriter()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getPrintWriter()}.
      * @throws IOException If something goes wrong.
      */
     @Test
@@ -264,7 +267,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#isResponseCommitted()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#isResponseCommitted()}.
      */
     @Test
     public void testIsResponseCommitted() {
@@ -279,7 +282,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getParam()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getParam()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -296,7 +299,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getParamValues()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getParamValues()}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -313,7 +316,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#getRequestLocale()}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#getRequestLocale()}.
      */
     @Test
     public void testGetRequestLocale() {
@@ -329,7 +332,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DefaultRequestWrapper#isUserInRole(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.DefaultRequestWrapper#isUserInRole(java.lang.String)}.
      */
     @Test
     public void testIsUserInRole() {
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/DispatchRequestWrapperTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/DispatchRequestWrapperTest.java
similarity index 87%
rename from tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/DispatchRequestWrapperTest.java
rename to tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/DispatchRequestWrapperTest.java
index 703254d..dae1cfc 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/DispatchRequestWrapperTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/DispatchRequestWrapperTest.java
@@ -18,8 +18,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request;
 
+import org.apache.tiles.request.DispatchRequestWrapper;
 import static org.easymock.classextension.EasyMock.createMock;
 import static org.easymock.classextension.EasyMock.replay;
 import static org.easymock.classextension.EasyMock.verify;
@@ -50,7 +51,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DispatchRequestWrapper#dispatch(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.DispatchRequestWrapper#dispatch(java.lang.String)}.
      * @throws IOException If something goes wrong.
      */
     @Test
@@ -66,7 +67,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DispatchRequestWrapper#include(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.DispatchRequestWrapper#include(java.lang.String)}.
      * @throws IOException If something goes wrong.
      */
     @Test
@@ -82,7 +83,7 @@
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.DispatchRequestWrapper#setContentType(java.lang.String)}.
+     * Test method for {@link org.apache.tiles.request.DispatchRequestWrapper#setContentType(java.lang.String)}.
      */
     @Test
     public void testSetContentType() {
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/RequestUtilTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/CollectionUtilTest.java
similarity index 70%
rename from tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/RequestUtilTest.java
rename to tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/CollectionUtilTest.java
index b2cea78..4fcc496 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/util/RequestUtilTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/collection/CollectionUtilTest.java
@@ -18,8 +18,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.tiles.request.util;
+package org.apache.tiles.request.collection;
 
+import org.apache.tiles.request.collection.CollectionUtil;
 import static org.easymock.classextension.EasyMock.*;
 import static org.junit.Assert.*;
 
@@ -30,29 +31,29 @@
 /**
  * Test {@link RequestUtil}.
  *
- * @version $Rev$ $Date$
+ * @version $Rev: 1066446 $ $Date: 2011-02-02 13:38:04 +0100 (Wed, 02 Feb 2011) $
  */
-public class RequestUtilTest {
+public class CollectionUtilTest {
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.RequestUtil#key(java.lang.Object)}.
+     * Test method for {@link org.apache.tiles.request.RequestUtil#key(java.lang.Object)}.
      */
     @Test
     public void testKey() {
-        assertEquals("1", RequestUtil.key(1));
-        assertEquals("hello", RequestUtil.key("hello"));
+        assertEquals("1", CollectionUtil.key(1));
+        assertEquals("hello", CollectionUtil.key("hello"));
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.RequestUtil#key(java.lang.Object)}.
+     * Test method for {@link org.apache.tiles.request.RequestUtil#key(java.lang.Object)}.
      */
     @Test(expected = IllegalArgumentException.class)
     public void testKeyException() {
-        RequestUtil.key(null);
+        CollectionUtil.key(null);
     }
 
     /**
-     * Test method for {@link org.apache.tiles.request.util.RequestUtil#enumerationSize(java.util.Enumeration)}.
+     * Test method for {@link org.apache.tiles.request.RequestUtil#enumerationSize(java.util.Enumeration)}.
      */
     @SuppressWarnings("unchecked")
     @Test
@@ -66,7 +67,7 @@
         expect(enumeration.hasMoreElements()).andReturn(false);
 
         replay(enumeration);
-        assertEquals(2, RequestUtil.enumerationSize(enumeration));
+        assertEquals(2, CollectionUtil.enumerationSize(enumeration));
         verify(enumeration);
     }
 
diff --git a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/scope/ReflectionContextResolverTest.java b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/scope/ReflectionContextResolverTest.java
index e29f4e0..24ec077 100644
--- a/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/scope/ReflectionContextResolverTest.java
+++ b/tiles-request/tiles-request-api/src/test/java/org/apache/tiles/request/scope/ReflectionContextResolverTest.java
@@ -32,8 +32,8 @@
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.Request;
 import org.apache.tiles.request.attribute.Addable;
-import org.apache.tiles.request.util.DefaultRequestWrapper;
-import org.apache.tiles.request.util.RequestWrapper;
+import org.apache.tiles.request.DefaultRequestWrapper;
+import org.apache.tiles.request.RequestWrapper;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtil.java b/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtil.java
index 3fec904..b9f12ad 100644
--- a/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtil.java
+++ b/tiles-request/tiles-request-freemarker/src/main/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtil.java
@@ -81,7 +81,7 @@
     /**
      * Returns the application context. It must be
      * first saved creating an {@link ApplicationContext} and using
-     * {@link org.apache.tiles.request.util.ApplicationAccess#register(ApplicationContext)}.
+     * {@link org.apache.tiles.request.ApplicationAccess#register(ApplicationContext)}.
      *
      * @param env The Freemarker environment.
      * @return The
diff --git a/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java b/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
index d922e33..0b20632 100644
--- a/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
+++ b/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestTest.java
@@ -40,7 +40,7 @@
 import org.apache.tiles.request.DispatchRequest;
 import org.apache.tiles.request.scope.ContextResolver;
 import org.apache.tiles.request.servlet.ServletRequest;
-import org.apache.tiles.request.util.ApplicationAccess;
+import org.apache.tiles.request.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java b/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java
index 750878f..4d5b48f 100644
--- a/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java
+++ b/tiles-request/tiles-request-freemarker/src/test/java/org/apache/tiles/request/freemarker/FreemarkerRequestUtilTest.java
@@ -32,8 +32,8 @@
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Before;
 import org.junit.Test;
 
diff --git a/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java b/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java
index aec43c4..2083f10 100644
--- a/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java
+++ b/tiles-request/tiles-request-jsp/src/main/java/org/apache/tiles/request/jsp/JspUtil.java
@@ -23,8 +23,8 @@
 import javax.servlet.jsp.JspContext;
 import javax.servlet.jsp.PageContext;
 
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationAccess;
 
 /**
  * JSP utilities for JSP requests and related.
@@ -42,7 +42,7 @@
     /**
      * Returns the application context. It must be
      * first saved creating an {@link ApplicationContext} and using
-     * {@link org.apache.tiles.request.util.ApplicationAccess#register(ApplicationContext)}.
+     * {@link org.apache.tiles.request.ApplicationAccess#register(ApplicationContext)}.
      *
      * @param jspContext The JSP context.
      * @return The application context.
diff --git a/tiles-request/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/JspUtilTest.java b/tiles-request/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/JspUtilTest.java
index a12b499..ee90a40 100644
--- a/tiles-request/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/JspUtilTest.java
+++ b/tiles-request/tiles-request-jsp/src/test/java/org/apache/tiles/request/jsp/JspUtilTest.java
@@ -26,8 +26,8 @@
 import javax.servlet.jsp.JspContext;
 import javax.servlet.jsp.PageContext;
 
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Test;
 
 /**
diff --git a/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java b/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java
index 6d7cdce..f03ee33 100644
--- a/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java
+++ b/tiles-request/tiles-request-servlet/src/main/java/org/apache/tiles/request/servlet/ServletUtil.java
@@ -27,9 +27,9 @@
 import javax.servlet.ServletException;
 
 import org.apache.tiles.request.ApplicationContext;
+import org.apache.tiles.request.ApplicationAccess;
+import org.apache.tiles.request.DispatchRequestWrapper;
 import org.apache.tiles.request.Request;
-import org.apache.tiles.request.util.ApplicationAccess;
-import org.apache.tiles.request.util.DispatchRequestWrapper;
 
 /**
  * Utilities for Tiles request servlet support.
diff --git a/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletUtilTest.java b/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletUtilTest.java
index c3883a6..38942b0 100644
--- a/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletUtilTest.java
+++ b/tiles-request/tiles-request-servlet/src/test/java/org/apache/tiles/request/servlet/ServletUtilTest.java
@@ -28,8 +28,8 @@
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 
+import org.apache.tiles.request.ApplicationAccess;
 import org.apache.tiles.request.ApplicationContext;
-import org.apache.tiles.request.util.ApplicationAccess;
 import org.junit.Test;
 
 /**
