You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by th...@apache.org on 2020/11/28 22:19:09 UTC

[tapestry-5] 01/03: TAP5-2627: putting all of beanmodel subproject into a single parent package

This is an automated email from the ASF dual-hosted git repository.

thiagohp pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tapestry-5.git

commit f334b6aec8ef2c9afd2a0c4b2bcb6a9bfa78bb4a
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Mon Jun 1 18:44:08 2020 -0300

    TAP5-2627: putting all of beanmodel subproject into a single parent package
---
 5.7_RELEASE_NOTES.md                               | 13 +++++
 beanmodel/build.gradle                             |  1 +
 .../{beaneditor => beanmodel}/BeanModel.java       | 17 ++++---
 .../BeanModelSourceBuilder.java                    | 12 ++---
 .../beaneditor => beanmodel}/BeanModelUtils.java   | 14 ++++--
 .../tapestry5/{ => beanmodel}/PropertyConduit.java |  2 +-
 .../{ => beanmodel}/PropertyConduit2.java          |  4 +-
 .../{beaneditor => beanmodel}/PropertyModel.java   |  7 ++-
 .../internal/InternalPropertyConduit.java          |  6 +--
 .../{ => beanmodel}/internal/antlr/BaseLexer.java  |  2 +-
 .../{ => beanmodel}/internal/antlr/BaseParser.java |  2 +-
 .../internal/antlr/package-info.java               |  2 +-
 .../internal/beanmodel}/BeanModelImpl.java         | 12 ++---
 .../internal/beanmodel}/PropertyModelImpl.java     |  8 +--
 .../internal/services/BeanModelSourceImpl.java     | 12 ++---
 .../services/ClassPropertyAdapterImpl.java         |  3 +-
 .../services/CoercingPropertyConduitWrapper.java   |  6 +--
 .../internal/services/Invariant.java               |  4 +-
 .../internal/services/LiteralPropertyConduit.java  |  4 +-
 .../services/PlasticClassListenerLogger.java       |  2 +-
 .../internal/services/PropertyAccessImpl.java      |  2 +-
 .../internal/services/PropertyAdapterImpl.java     |  5 +-
 .../internal/services/PropertyConduitDelegate.java |  8 +--
 .../services/PropertyConduitSourceImpl.java        | 11 ++--
 .../services/PropertyExpressionException.java      |  2 +-
 .../{ => beanmodel}/services/BeanModelSource.java  |  8 +--
 .../services/PropertyConduitSource.java            |  6 +--
 .../internal/services/PlasticProxyFactoryImpl.java |  1 +
 .../corelib/base/AbstractPropertyOutput.java       |  3 +-
 .../tapestry5/corelib/components/AjaxFormLoop.java |  8 ++-
 .../tapestry5/corelib/components/BeanDisplay.java  | 14 +++---
 .../tapestry5/corelib/components/BeanEditForm.java | 16 +++---
 .../tapestry5/corelib/components/BeanEditor.java   | 12 ++---
 .../apache/tapestry5/corelib/components/Form.java  |  9 +++-
 .../apache/tapestry5/corelib/components/Grid.java  | 18 +++----
 .../tapestry5/corelib/components/GridColumns.java  |  2 +-
 .../tapestry5/corelib/components/GridRows.java     |  2 +-
 .../corelib/components/PropertyDisplay.java        |  2 +-
 .../corelib/components/PropertyEditor.java         | 14 ++++--
 .../tapestry5/corelib/components/Select.java       |  7 ++-
 .../apache/tapestry5/corelib/components/Zone.java  |  7 ++-
 .../tapestry5/corelib/pages/ExceptionReport.java   |  8 ++-
 .../tapestry5/corelib/pages/PageCatalog.java       |  4 +-
 .../corelib/pages/PropertyEditBlocks.java          |  4 +-
 .../tapestry5/corelib/pages/ServiceStatus.java     |  4 +-
 .../org/apache/tapestry5/grid/GridDataSource.java  |  2 +-
 .../java/org/apache/tapestry5/grid/GridModel.java  |  2 +-
 .../org/apache/tapestry5/grid/SortConstraint.java  |  4 +-
 .../tapestry5/internal/TapestryInternalUtils.java  |  3 ++
 .../tapestry5/internal/bindings/PropBinding.java   |  8 +--
 .../internal/bindings/PropBindingFactory.java      |  4 +-
 .../internal/grid/CollectionGridDataSource.java    |  2 +-
 .../internal/pageload/PageLoaderImpl.java          | 18 ++++++-
 .../tapestry5/internal/services/AjaxFilter.java    |  9 +++-
 .../internal/services/AssetDispatcher.java         |  8 ++-
 .../internal/services/CheckForUpdatesFilter.java   |  7 ++-
 .../services/ClientPersistentFieldStorageImpl.java |  7 ++-
 .../services/ClientPersistentFieldStrategy.java    |  7 ++-
 .../services/ComponentEventDispatcher.java         |  8 ++-
 .../services/ComponentEventLinkEncoderImpl.java    | 13 ++++-
 .../services/ComponentEventRequestHandlerImpl.java |  8 ++-
 .../services/ComponentInstantiatorSourceImpl.java  |  7 ++-
 .../ComponentRequestHandlerTerminator.java         | 10 +++-
 .../services/DefaultRequestExceptionHandler.java   |  7 ++-
 .../services/DeferredResponseRenderer.java         |  7 ++-
 .../internal/services/PageRenderDispatcher.java    |  8 ++-
 .../services/PageRenderRequestHandlerImpl.java     |  7 ++-
 .../ProductionModeUnknownComponentFilter.java      |  7 ++-
 .../internal/services/RequestErrorFilter.java      |  9 +++-
 .../internal/services/RequestOperationTracker.java |  7 ++-
 .../services/RequestSecurityManagerImpl.java       |  8 ++-
 .../internal/services/RootPathDispatcher.java      |  9 +++-
 .../services/StreamPageContentResultProcessor.java |  9 +++-
 .../internal/services/ValueEncoderSourceImpl.java  |  6 ++-
 .../org/apache/tapestry5/modules/AssetsModule.java | 26 +++++++++-
 .../apache/tapestry5/modules/InternalModule.java   | 58 +++++++++++++++++++++-
 .../apache/tapestry5/modules/TapestryModule.java   | 12 ++++-
 .../apache/tapestry5/test/TapestryTestCase.java    | 40 +++++++++++++--
 .../corelib/base/AbstractPropertyOutputTest.java   |  4 +-
 .../corelib/components/BeanEditorTest.java         |  4 +-
 .../corelib/components/PropertyEditorTest.java     |  2 +-
 .../integration/app1/base/GenericEditor.java       |  4 +-
 .../app1/pages/AddedGridColumnsDemo.java           |  4 +-
 .../integration/app1/pages/EmptyGrid.java          |  6 +--
 .../integration/app1/pages/GridInLoopDemo.java     |  4 +-
 .../app1/pages/SimpleTrackGridDemo.java            |  4 +-
 .../org/apache/tapestry5/internal/DataBean.java    |  2 +-
 .../internal/TapestryInternalUtilsTest.java        |  2 +
 .../internal/beaneditor/BeanModelUtilsTest.java    |  5 +-
 .../ValidateAnnotationConstraintGeneratorTest.java |  2 +-
 .../grid/CollectionGridDataSourceTest.java         |  6 +--
 .../services/AbstractBeanModelSourceImplTest.java  | 11 ++--
 .../services/ApplicationStateManagerImplTest.java  |  7 ++-
 .../internal/services/BeanBlockSourceImplTest.java |  7 ++-
 .../services/BeanModelSourceBuilderTest.java       |  4 +-
 .../internal/services/BeanModelSourceImplTest.java |  2 +-
 .../services/ComponentEventDispatcherTest.java     | 12 ++++-
 .../ComponentEventLinkEncoderImplTest.java         | 11 +++-
 .../internal/services/LinkSourceImplTest.java      |  8 ++-
 .../services/PropertyConduitSourceImplTest.java    |  9 ++--
 .../services/RequestSecurityManagerImplTest.java   |  7 ++-
 .../internal/services/StaticFilesFilterTest.java   |  7 ++-
 .../internal/test/InternalBaseTestCase.java        | 23 ++++++++-
 .../tapestry5/ioc/modules/TapestryIOCModule.java   |  1 +
 .../groovy/ioc/specs/ExceptionUtilsSpec.groovy     |  2 +-
 .../groovy/ioc/specs/PropertyAccessImplSpec.groovy |  1 +
 .../tapestry5/kaptcha/modules/KaptchaModule.java   |  8 ++-
 .../internal/services/UploadExceptionFilter.java   |  8 ++-
 108 files changed, 618 insertions(+), 216 deletions(-)

diff --git a/5.7_RELEASE_NOTES.md b/5.7_RELEASE_NOTES.md
new file mode 100644
index 0000000..024a6ed
--- /dev/null
+++ b/5.7_RELEASE_NOTES.md
@@ -0,0 +1,13 @@
+Scratch pad for changes destined for the 5.7 release notes page.
+
+# Breaking Changes:
+
+## Non-Internal Classes Moved to Different Packages
+
+This was done to avoid split packages (i.e. packages which appear in more than one JAR) 
+in Apache Tapestry and making it easier to be used in projects using Java 9 modules (JPMS).
+
+# Possibly Breaking Changes:
+
+# Non-Breaking Changes:
+
diff --git a/beanmodel/build.gradle b/beanmodel/build.gradle
index ca0d1cf..c63d5b6 100644
--- a/beanmodel/build.gradle
+++ b/beanmodel/build.gradle
@@ -23,6 +23,7 @@ dependencies {
     }
 
     testCompile "org.testng:testng:${versions.testng}", { transitive = false }
+    testCompile "org.easymock:easymock:${versions.easymock}"
 }
 
 clean.delete generateGrammarSource.outputDirectory
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
similarity index 92%
rename from beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
index cf47276..fdb60ac 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
@@ -10,23 +10,24 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.PropertyConduit;
+package org.apache.tapestry5.beanmodel;
 
 import java.util.List;
 
+import org.apache.tapestry5.beaneditor.DataType;
+import org.apache.tapestry5.beaneditor.RelativePosition;
+
 /**
  * Provides the information necessary to build a user interface to view, create or edit an instance of a particular
  * type.
  *
  * BeanModels are not thread-safe, they are also not serializable.
  *
- * Here, and in {@link org.apache.tapestry5.beaneditor.PropertyModel}, the term "propertyName" is used for simplicitly.
- * However, a full {@linkplain org.apache.tapestry5.services.PropertyConduitSource#create(Class, String) property
+ * Here, and in {@link org.apache.tapestry5.beanmodel.PropertyModel}, the term "propertyName" is used for simplicitly.
+ * However, a full {@linkplain org.apache.tapestry5.beanmodel.services.PropertyConduitSource#create(Class, String) property
  * expression} may be utilized when {@linkplain #add(String) adding new properties to an existing BeanModel}.
  *
- * @see org.apache.tapestry5.services.BeanModelSource
+ * @see org.apache.tapestry5.beanmodel.services.BeanModelSource
  */
 public interface BeanModel<T>
 {
@@ -61,7 +62,7 @@ public interface BeanModel<T>
     /**
      * Returns the identified model.  Property ids are a stripped version of the property name. Case is ignored.
      *
-     * @param propertyId matched caselessly against {@link org.apache.tapestry5.beaneditor.PropertyModel#getId()}
+     * @param propertyId matched caselessly against {@link org.apache.tapestry5.beanmodel.PropertyModel#getId()}
      * @throws RuntimeException if the bean editor model does not have a property model with the indicated id
      */
     PropertyModel getById(String propertyId);
@@ -70,7 +71,7 @@ public interface BeanModel<T>
      * Adds a new property to the model, returning its mutable model for further refinement. The property is added to
      * the <em>end</em> of the list of properties. The property must be real (but may have been excluded if there was no
      * {@linkplain org.apache.tapestry5.beaneditor.DataType datatype} associated with the property). To add a synthetic
-     * property, use {@link #add(String, org.apache.tapestry5.PropertyConduit)}
+     * property, use {@link #add(String, org.apache.tapestry5.beanmodel.PropertyConduit)}
      *
      * @param propertyName name of property to add
      * @return the new property model (for further configuration)
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModelSourceBuilder.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModelSourceBuilder.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
index 20a23cb..208decb 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/BeanModelSourceBuilder.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
@@ -9,10 +9,13 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-package org.apache.tapestry5.beaneditor;
+package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.internal.services.BeanModelSourceImpl;
-import org.apache.tapestry5.internal.services.PropertyConduitSourceImpl;
+import org.apache.tapestry5.beanmodel.internal.services.BeanModelSourceImpl;
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl;
+import org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImpl;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.internal.services.StringInternerImpl;
 import org.apache.tapestry5.ioc.AnnotationProvider;
@@ -21,16 +24,13 @@ import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.internal.BasicDataTypeAnalyzers;
 import org.apache.tapestry5.ioc.internal.BasicTypeCoercions;
 import org.apache.tapestry5.ioc.internal.services.PlasticProxyFactoryImpl;
-import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl;
 import org.apache.tapestry5.ioc.internal.services.TypeCoercerImpl;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.CoercionTuple;
 import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
 import org.apache.tapestry5.ioc.services.PropertyAccess;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.PropertyConduitSource;
 import org.slf4j.LoggerFactory;
 
 import java.lang.annotation.Annotation;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
index 207fb97..41d8866 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
@@ -12,9 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.beaneditor;
+package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
 
 /**
@@ -26,7 +25,7 @@ public final class BeanModelUtils
     final private static String[] EMPTY_STRING_ARRAY = new String[0];
 
     /**
-     * Performs standard set of modifications to a {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * Performs standard set of modifications to a {@link org.apache.tapestry5.beanmodel.BeanModel}
      * . First new
      * properties may be added, then properties removed, then properties reordered.
      *
@@ -62,7 +61,7 @@ public final class BeanModelUtils
 
     /**
      * Adds empty properties to the bean model. New properties are added with a <em>null</em>
-     * {@link org.apache.tapestry5.PropertyConduit}. `
+     * {@link org.apache.tapestry5.beanmodel.PropertyConduit}. `
      *
      * @param model         to be modified
      * @param propertyNames comma-separated list of property names
@@ -108,7 +107,12 @@ public final class BeanModelUtils
         model.reorder(split(propertyNames));
     }
     
-    static String[] split(String propertyNames)
+    /**
+     * Don't use this method, which is only public for testing purposes.
+     * @param propertyNames
+     * @return a String array
+     */
+    public static String[] split(String propertyNames)
     {
         String trimmed = propertyNames.trim();
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
similarity index 97%
rename from beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
index 3dbb0c0..c8be9ef 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5;
+package org.apache.tapestry5.beanmodel;
 
 import org.apache.tapestry5.ioc.AnnotationProvider;
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit2.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit2.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit2.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit2.java
index 1577a3d..36fbf8d 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/PropertyConduit2.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit2.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5;
+package org.apache.tapestry5.beanmodel;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.services.PropertyConduitSource;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 
 
 /**
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
index a0c5467..51d9ae3 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
@@ -10,17 +10,16 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.beaneditor;
+package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 
 /**
- * Part of a {@link org.apache.tapestry5.beaneditor.BeanModel} that defines the attributes of a single property of a
+ * Part of a {@link org.apache.tapestry5.beanmodel.BeanModel} that defines the attributes of a single property of a
  * bean.
  *
  *
- * A PropertyModel is also an {@link AnnotationProvider}, as long as the {@link org.apache.tapestry5.PropertyConduit} is
+ * A PropertyModel is also an {@link AnnotationProvider}, as long as the {@link org.apache.tapestry5.beanmodel.PropertyConduit} is
  * non-null.  When there is no property conduit, then {@link org.apache.tapestry5.ioc.AnnotationProvider#getAnnotation(Class)}
  * will return null.
  */
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/InternalPropertyConduit.java
similarity index 82%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/InternalPropertyConduit.java
index 315b372..c82963a 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/InternalPropertyConduit.java
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal;
+package org.apache.tapestry5.beanmodel.internal;
 
-import org.apache.tapestry5.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
 
 
 /**
- * Extension to {@link org.apache.tapestry5.PropertyConduit2} that adds a method to determine the name of the property.
+ * Extension to {@link org.apache.tapestry5.beanmodel.PropertyConduit2} that adds a method to determine the name of the property.
  * 
  * @since 5.2.0
  *
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseLexer.java
similarity index 96%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseLexer.java
index 442240d..576a1bc 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseLexer.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.antlr;
+package org.apache.tapestry5.beanmodel.internal.antlr;
 
 import org.antlr.runtime.CharStream;
 import org.antlr.runtime.Lexer;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseParser.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseParser.java
index 212b782..63cf100 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/BaseParser.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.antlr;
+package org.apache.tapestry5.beanmodel.internal.antlr;
 
 import org.antlr.runtime.Parser;
 import org.antlr.runtime.TokenStream;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/package-info.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/package-info.java
similarity index 92%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/package-info.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/package-info.java
index 55be313..7a1948f 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/antlr/package-info.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/antlr/package-info.java
@@ -15,4 +15,4 @@
 /**
  * [INTERNAL USE ONLY] support classes related to Antlr; API subject to change
  */
-package org.apache.tapestry5.internal.antlr;
+package org.apache.tapestry5.beanmodel.internal.antlr;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
index 4d2245d..bf51280 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
@@ -12,13 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.beaneditor;
+package org.apache.tapestry5.beanmodel.internal.beanmodel;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
 import org.apache.tapestry5.beaneditor.RelativePosition;
-import org.apache.tapestry5.internal.services.CoercingPropertyConduitWrapper;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.internal.services.CoercingPropertyConduitWrapper;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
@@ -27,7 +28,6 @@ import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.ioc.util.AvailableValues;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.plastic.PlasticUtils;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 import java.util.List;
 import java.util.Map;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
similarity index 94%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
index 24d0b2d..6707d4c 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.beaneditor;
+package org.apache.tapestry5.beanmodel.internal.beanmodel;
 
 import java.lang.annotation.Annotation;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
 import org.apache.tapestry5.beaneditor.Sortable;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
similarity index 94%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
index bb20de0..befb8ff 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
@@ -12,23 +12,23 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
 import org.apache.tapestry5.beaneditor.NonVisual;
 import org.apache.tapestry5.beaneditor.ReorderProperties;
-import org.apache.tapestry5.internal.beaneditor.BeanModelImpl;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.internal.beanmodel.BeanModelImpl;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.ComponentLayer;
 import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
similarity index 98%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
index 8164ec7..c2005f1 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
 
@@ -23,6 +23,7 @@ import java.lang.reflect.Method;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tapestry5.ioc.internal.services.ServiceMessages;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.GenericsUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
similarity index 91%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
index 2127696..7b371a4 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 public class CoercingPropertyConduitWrapper implements PropertyConduit2
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/Invariant.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/Invariant.java
similarity index 88%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/Invariant.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/Invariant.java
index 924b570..bc52c5b 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/Invariant.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/Invariant.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.*;
 
 /**
- * Special annotation that is applied to literal {@link org.apache.tapestry5.PropertyConduit}s, to inform {@link
+ * Special annotation that is applied to literal {@link org.apache.tapestry5.beanmodel.PropertyConduit}s, to inform {@link
  * org.apache.tapestry5.internal.bindings.PropBinding} that the value is, in fact, invariant.
  */
 @Target({ElementType.PARAMETER, ElementType.FIELD})
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
similarity index 94%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
index e8cd58f..eca1ced 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticClassListenerLogger.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PlasticClassListenerLogger.java
similarity index 96%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticClassListenerLogger.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PlasticClassListenerLogger.java
index 8ebdede..a6c7262 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticClassListenerLogger.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PlasticClassListenerLogger.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import org.apache.tapestry5.plastic.ClassType;
 import org.apache.tapestry5.plastic.PlasticClassEvent;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
similarity index 99%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
index e6cd3e3..a2838c6 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.beans.BeanInfo;
 import java.beans.IntrospectionException;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
similarity index 96%
rename from beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
index 97685ef..9ee932a 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
@@ -12,9 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.ioc.internal.services.AccessableObjectAnnotationProvider;
+import org.apache.tapestry5.ioc.internal.services.AnnotationProviderChain;
+import org.apache.tapestry5.ioc.internal.services.ServiceMessages;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
 import org.apache.tapestry5.ioc.services.PropertyAdapter;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitDelegate.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
similarity index 82%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitDelegate.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
index 3849103..780cd59 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitDelegate.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
@@ -12,18 +12,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import java.lang.annotation.Annotation;
 
-import org.apache.tapestry5.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.internal.util.IntegerRange;
 import org.apache.tapestry5.ioc.AnnotationProvider;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 /**
- * Companion class for {@link org.apache.tapestry5.PropertyConduit} instances created by the
- * {@link org.apache.tapestry5.services.PropertyConduitSource}.
+ * Companion class for {@link org.apache.tapestry5.beanmodel.PropertyConduit} instances created by the
+ * {@link org.apache.tapestry5.beanmodel.services.PropertyConduitSource}.
  */
 @SuppressWarnings("all")
 public class PropertyConduitDelegate
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
similarity index 99%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
index 58820db..292d430 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
@@ -12,16 +12,18 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 import org.antlr.runtime.ANTLRInputStream;
 import org.antlr.runtime.CommonTokenStream;
 import org.antlr.runtime.tree.Tree;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
-import org.apache.tapestry5.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.internal.antlr.PropertyExpressionLexer;
 import org.apache.tapestry5.internal.antlr.PropertyExpressionParser;
+import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.internal.util.IntegerRange;
 import org.apache.tapestry5.internal.util.MultiKey;
 import org.apache.tapestry5.ioc.AnnotationProvider;
@@ -39,7 +41,6 @@ import org.apache.tapestry5.plastic.*;
 import org.apache.tapestry5.services.ComponentClasses;
 import org.apache.tapestry5.services.ComponentLayer;
 import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyExpressionException.java
similarity index 95%
rename from beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyExpressionException.java
index 765c0bb..fce4044 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyExpressionException.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.beanmodel.internal.services;
 
 /**
  * Exception thrown when there is a problem parsing a property expression using the ANTLR property expression grammar.
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/services/BeanModelSource.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
similarity index 93%
rename from beanmodel/src/main/java/org/apache/tapestry5/services/BeanModelSource.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
index b98fa60..1df5bb4 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/services/BeanModelSource.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
@@ -10,19 +10,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.beanmodel.services;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.ioc.Messages;
 
 /**
- * Used by a component to create a default {@link org.apache.tapestry5.beaneditor.BeanModel} for a particular bean
+ * Used by a component to create a default {@link org.apache.tapestry5.beanmodel.BeanModel} for a particular bean
  * class. Also provides support to the model by generating validation information for individual fields.
  *
  * BeanModels are the basis for the {@link org.apache.tapestry5.corelib.components.BeanEditor} and {@link
  * org.apache.tapestry5.corelib.components.Grid} comopnents.
  *
- * @see org.apache.tapestry5.services.PropertyConduitSource
+ * @see org.apache.tapestry5.beanmodel.services.PropertyConduitSource
  */
 public interface BeanModelSource
 {
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
similarity index 89%
rename from beanmodel/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java
rename to beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
index 83d8d33..3f10792 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
@@ -10,12 +10,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.beanmodel.services;
 
-import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
 
 /**
- * A source for {@link org.apache.tapestry5.PropertyConduit}s, which can be thought of as a compiled property path
+ * A source for {@link org.apache.tapestry5.beanmodel.PropertyConduit}s, which can be thought of as a compiled property path
  * expression. PropertyConduits are the basis of the "prop:" binding factory, thus this service defines the expression
  * format used by the {@link org.apache.tapestry5.internal.bindings.PropBindingFactory}.
  */
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java
index f1b3f67..c9c8c82 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/ioc/internal/services/PlasticProxyFactoryImpl.java
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.ioc.internal.services;
 
+import org.apache.tapestry5.beanmodel.internal.services.PlasticClassListenerLogger;
 import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
 import org.apache.tapestry5.internal.plastic.asm.Type;
 import org.apache.tapestry5.internal.plastic.asm.tree.*;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
index e24f025..d8033bd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
@@ -14,7 +14,8 @@ package org.apache.tapestry5.corelib.base;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
index c87c9e1..748a2a4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
@@ -14,13 +14,19 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.internal.AjaxFormLoopContext;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentDefaultProvider;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.PartialMarkupRenderer;
+import org.apache.tapestry5.services.PartialMarkupRendererFilter;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
index 50e088f..6e01fab 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
@@ -18,12 +18,12 @@ import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.BeanModelSource;
 
 /**
  * A component that displays the properties of a bean (or POJO, or any object with properties) as a
@@ -77,7 +77,7 @@ public class BeanDisplay
     private BeanModel model;
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
+     * {@link org.apache.tapestry5.beanmodel.BeanModel} (only used
      * when a default model is created automatically).
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive.
@@ -86,7 +86,7 @@ public class BeanDisplay
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      * The names are case-insensitive.
@@ -104,7 +104,7 @@ public class BeanDisplay
     private String reorder;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
index 6f72a93..0f83040 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
@@ -14,10 +14,10 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 /**
  * A component that creates an entire form for editing the properties of a particular bean (or POJO, or any object
@@ -35,8 +35,8 @@ import org.apache.tapestry5.services.BeanModelSource;
  * events of a Form.
  *
  * @tapestrydoc
- * @see org.apache.tapestry5.beaneditor.BeanModel
- * @see org.apache.tapestry5.services.BeanModelSource
+ * @see org.apache.tapestry5.beanmodel.BeanModel
+ * @see org.apache.tapestry5.beanmodel.services.BeanModelSource
  * @see org.apache.tapestry5.corelib.components.PropertyEditor
  * @see org.apache.tapestry5.beaneditor.DataType
  * @see Form
@@ -67,7 +67,7 @@ public class BeanEditForm implements ClientElement, FormValidationControl
 
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
+     * {@link org.apache.tapestry5.beanmodel.BeanModel} (only used
      * when a default model is created automatically).
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive.
@@ -76,7 +76,7 @@ public class BeanEditForm implements ClientElement, FormValidationControl
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      * The names are case-insensitive.
@@ -94,7 +94,7 @@ public class BeanEditForm implements ClientElement, FormValidationControl
     private String reorder;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
index 2e29d10..185afd5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
@@ -20,16 +20,16 @@ import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.internal.BeanEditContextImpl;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.BeanValidationContextImpl;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.plastic.PlasticUtils;
 import org.apache.tapestry5.services.BeanEditContext;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FormSupport;
 
@@ -89,7 +89,7 @@ public class BeanEditor
 
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
+     * {@link org.apache.tapestry5.beanmodel.BeanModel} (only used
      * when a default model is created automatically).
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive.
@@ -98,7 +98,7 @@ public class BeanEditor
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      * The names are case-insensitive.
@@ -116,7 +116,7 @@ public class BeanEditor
     private String reorder;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * (only used
      * when a default model is created automatically).
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
index 39451f7..062a638 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.ClientValidation;
 import org.apache.tapestry5.corelib.internal.ComponentActionSink;
 import org.apache.tapestry5.corelib.internal.FormSupportImpl;
@@ -36,7 +37,13 @@ import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ClientDataEncoder;
+import org.apache.tapestry5.services.ComponentSource;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.StreamPageContent;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
index a884e52..6cf048d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
@@ -14,16 +14,16 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.data.GridPagerPosition;
 import org.apache.tapestry5.grid.*;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
 import org.apache.tapestry5.internal.bindings.AbstractBinding;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
 import org.apache.tapestry5.services.FormSupport;
@@ -50,8 +50,8 @@ import java.util.List;
  * to use a unique ID for each row that doesn't change when rows are reordered.
  *
  * @tapestrydoc
- * @see org.apache.tapestry5.beaneditor.BeanModel
- * @see org.apache.tapestry5.services.BeanModelSource
+ * @see org.apache.tapestry5.beanmodel.BeanModel
+ * @see org.apache.tapestry5.beanmodel.services.BeanModelSource
  * @see org.apache.tapestry5.grid.GridDataSource
  * @see BeanEditForm
  * @see BeanDisplay
@@ -129,7 +129,7 @@ public class Grid implements GridModel, ClientElement
     private GridSortModel sortModel;
 
     /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}.
+     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beanmodel.BeanModel}.
      * Cells for added columns will be blank unless a cell override is provided. This parameter is only used
      * when a default model is created automatically.
      */
@@ -138,7 +138,7 @@ public class Grid implements GridModel, ClientElement
 
     /**
      * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel}.
+     * {@link org.apache.tapestry5.beanmodel.BeanModel}.
      * Only these properties will be retained, and the properties will also be reordered. The names are
      * case-insensitive. This parameter is only used
      * when a default model is created automatically.
@@ -148,7 +148,7 @@ public class Grid implements GridModel, ClientElement
     private String include;
 
     /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
+     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beanmodel.BeanModel}
      * .
      * The names are case-insensitive. This parameter is only used
      * when a default model is created automatically.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
index f27b0ef..5be3d11 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
@@ -19,7 +19,7 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.PropertyOverrides;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.GridModel;
 import org.apache.tapestry5.grid.GridSortModel;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
index 356ac32..b7c0860 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
@@ -32,7 +32,7 @@ import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.grid.GridDataSource;
 import org.apache.tapestry5.grid.GridModel;
 import org.apache.tapestry5.services.FormSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
index a36ab7a..e54e19a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.corelib.base.AbstractPropertyOutput;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
index 1f9a418..cde9165 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
@@ -17,13 +17,21 @@ package org.apache.tapestry5.corelib.components;
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BeanBlockSource;
+import org.apache.tapestry5.services.Core;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FieldTranslatorSource;
+import org.apache.tapestry5.services.FieldValidatorDefaultSource;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.PropertyEditContext;
 
 import java.lang.annotation.Annotation;
 import java.util.Locale;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
index 9be23ab..aa9b197 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.corelib.data.BlankOption;
 import org.apache.tapestry5.corelib.data.SecureOption;
@@ -27,7 +28,11 @@ import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.FieldValidatorDefaultSource;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.ValueEncoderFactory;
+import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.apache.tapestry5.util.EnumSelectModel;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
index 627f6f6..b4e9b02 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.internal.ComponentActionSink;
 import org.apache.tapestry5.corelib.internal.FormSupportAdapter;
 import org.apache.tapestry5.corelib.internal.HiddenFieldPositioner;
@@ -22,7 +23,11 @@ import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ClientDataEncoder;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.HiddenFieldLocationRules;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
index 87d0d2f..fe1df02 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
@@ -21,6 +21,7 @@ import org.apache.tapestry5.annotations.ContentType;
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.annotations.UnknownActivationContextCheck;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.base.AbstractInternalPage;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
@@ -32,7 +33,12 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ExceptionReporter;
+import org.apache.tapestry5.services.PageRenderLinkSource;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.Session;
+import org.apache.tapestry5.services.URLEncoder;
 
 import java.net.MalformedURLException;
 import java.net.URL;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
index cffe9d5..7f0ccdf 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PageCatalog.java
@@ -17,8 +17,9 @@ package org.apache.tapestry5.corelib.pages;
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.alerts.AlertManager;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.func.*;
 import org.apache.tapestry5.internal.PageCatalogTotals;
@@ -31,7 +32,6 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
index c0f76df..d3d0bf8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
@@ -18,7 +18,8 @@ import org.apache.tapestry5.SelectModel;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.components.BeanEditForm;
 import org.apache.tapestry5.corelib.components.Checkbox;
 import org.apache.tapestry5.corelib.components.DateField;
@@ -30,7 +31,6 @@ import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.BeanBlockContribution;
 import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.PropertyEditContext;
 import org.apache.tapestry5.services.compatibility.Compatibility;
 import org.apache.tapestry5.services.compatibility.Trait;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
index 8546c6c..df58d95 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
@@ -14,14 +14,14 @@ package org.apache.tapestry5.corelib.pages;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Registry;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.services.ServiceActivity;
 import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
index 8fca800..e0ae720 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
@@ -77,7 +77,7 @@ public interface GridDataSource
 
     /**
      * Returns the type of value in the rows, or null if not known. This value is used to create a default {@link
-     * org.apache.tapestry5.beaneditor.BeanModel} when no such model is explicitly provided.
+     * org.apache.tapestry5.beanmodel.BeanModel} when no such model is explicitly provided.
      *
      * @return the row type, or null
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
index 8593110..1daac6b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.grid;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
 
 /**
  * A provider of model data to the sub-components of the {@link org.apache.tapestry5.corelib.components.Grid} component.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java b/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
index cbacd30..5691560 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.grid;
 
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 
 /**
- * Identifies how a single column (identified as a {@link org.apache.tapestry5.beaneditor.PropertyModel}) is sorted.
+ * Identifies how a single column (identified as a {@link org.apache.tapestry5.beanmodel.PropertyModel}) is sorted.
  */
 public class SortConstraint
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
index 0353dfe..bbf61fa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
@@ -13,6 +13,9 @@
 package org.apache.tapestry5.internal;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Orderable;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
index da4c53e..ffd8457 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
@@ -17,10 +17,10 @@ package org.apache.tapestry5.internal.bindings;
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.services.Invariant;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.Invariant;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 
@@ -88,7 +88,7 @@ public class PropBinding extends AbstractBinding implements InternalPropBinding
     }
 
     /**
-     * Almost always returns false, unless the conduit provides the {@link org.apache.tapestry5.internal.services.Invariant}
+     * Almost always returns false, unless the conduit provides the {@link org.apache.tapestry5.beanmodel.internal.services.Invariant}
      * annotation.
      */
     @Override
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
index 8dc3418..1bb7e1e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
@@ -14,11 +14,11 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 /**
  * Binding factory for reading and updating JavaBean properties.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
index 63591b1..dd338cf 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
@@ -19,7 +19,7 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
 
-import org.apache.tapestry5.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.GridDataSource;
 import org.apache.tapestry5.grid.SortConstraint;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
index 0ee401e..2d013a0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
@@ -16,11 +16,19 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.bindings.LiteralBinding;
 import org.apache.tapestry5.internal.parser.*;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
+import org.apache.tapestry5.internal.services.ComponentTemplateSource;
+import org.apache.tapestry5.internal.services.Instantiator;
+import org.apache.tapestry5.internal.services.PageElementFactory;
+import org.apache.tapestry5.internal.services.PageLoader;
+import org.apache.tapestry5.internal.services.PersistentFieldManager;
+import org.apache.tapestry5.internal.services.StringInterner;
 import org.apache.tapestry5.internal.structure.*;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.Location;
@@ -37,7 +45,13 @@ import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentClasses;
+import org.apache.tapestry5.services.ComponentMessages;
+import org.apache.tapestry5.services.ComponentTemplates;
+import org.apache.tapestry5.services.InvalidationEventHub;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.RequestGlobals;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 import org.slf4j.Logger;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
index 73fe6f5..31f004a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
@@ -14,10 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.*;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.Ajax;
+import org.apache.tapestry5.services.ComponentEventRequestFilter;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.Request;
+
 /**
  * A filter that intercepts Ajax-oriented requests, thos that originate on the client-side using XmlHttpRequest. In
  * these cases, the action processing occurs normally, but the response is quite different.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
index 760ecb9..bc893d6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
@@ -15,11 +15,17 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.annotations.Marker;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.AssetRequestDispatcher;
+import org.apache.tapestry5.services.ClasspathAssetAliasManager;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.PathConstructor;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.assets.AssetRequestHandler;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
index f6c6f32..1841ab4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
@@ -15,13 +15,18 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.annotations.IntermediateType;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
 import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.UpdateListenerHub;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
index a94ac4f..120939e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
@@ -13,11 +13,16 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.ScopeConstants;
 import org.apache.tapestry5.ioc.annotations.Scope;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ClientDataEncoder;
+import org.apache.tapestry5.services.ClientDataSink;
+import org.apache.tapestry5.services.PersistentFieldChange;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
 
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
index dff329f..635e295 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
@@ -15,7 +15,12 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.PersistentFieldChange;
+import org.apache.tapestry5.services.PersistentFieldStrategy;
 
 import java.util.Collection;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
index 1d0bd5d..5522d9f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
@@ -12,8 +12,14 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
index 129d1dc..1259bca 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
@@ -15,12 +15,23 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ContextPathEncoder;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.PersistentLocale;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.security.ClientWhitelist;
 
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
index e1247c7..13c5266 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
@@ -13,11 +13,17 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.TrackableComponentEventCallback;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.Traditional;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
index a267d00..4e8f9b7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.model.MutableComponentModelImpl;
@@ -42,7 +43,11 @@ import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.ComponentEvent;
 import org.apache.tapestry5.runtime.ComponentResourcesAware;
 import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventHandler;
+import org.apache.tapestry5.services.TransformConstants;
+import org.apache.tapestry5.services.UpdateListener;
+import org.apache.tapestry5.services.UpdateListenerHub;
 import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
 import org.apache.tapestry5.services.transform.ControlledPackageType;
 import org.apache.tapestry5.services.transform.TransformationSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
index c100178..0ab7b9f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
@@ -14,10 +14,16 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.*;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Traditional;
+
 /**
  * Terminator for the {@link org.apache.tapestry5.services.ComponentRequestHandler} pipeline, that feeds out into the
  * {@link org.apache.tapestry5.services.ComponentEventRequestHandler} and {@link org.apache.tapestry5.services.PageRenderRequestHandler}
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
index 1055df5..896a546 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
@@ -16,6 +16,7 @@ import org.apache.tapestry5.ContextAwareException;
 import org.apache.tapestry5.ExceptionHandlerAssistant;
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.ServiceResources;
@@ -25,7 +26,11 @@ import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.runtime.ComponentEventException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ExceptionReporter;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestExceptionHandler;
+import org.apache.tapestry5.services.Response;
 import org.slf4j.Logger;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java
index 72d2b88..08cd973 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DeferredResponseRenderer.java
@@ -15,9 +15,14 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
index 38e02e7..5f9fcbc 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
@@ -12,8 +12,14 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
index fc0223a..f1d633a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
@@ -14,10 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Traditional;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java
index 9f95796..7c045d7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProductionModeUnknownComponentFilter.java
@@ -12,10 +12,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
index 4346eb1..7c259e0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
@@ -1,9 +1,14 @@
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.*;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestExceptionHandler;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
+
 /**
  * Filter for the {@link org.apache.tapestry5.services.RequestHandler} pipeline used to intercept and report
  * exceptions.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java
index f070e09..6c37c8b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestOperationTracker.java
@@ -14,10 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestFilter;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
index dd0ada6..63c13b3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
@@ -18,8 +18,14 @@ import org.apache.tapestry5.Link;
 import org.apache.tapestry5.LinkSecurity;
 import org.apache.tapestry5.MetaDataConstants;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
index 66c8197..610a052 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
@@ -16,9 +16,16 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
index 962b811..b0ffbee 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
@@ -16,11 +16,18 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.PageRenderRequestHandler;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.StreamPageContent;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
index 6d661bb..d367409 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
@@ -17,10 +17,14 @@ package org.apache.tapestry5.internal.services;
 import java.util.Map;
 
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClasses;
+import org.apache.tapestry5.services.InvalidationEventHub;
+import org.apache.tapestry5.services.ValueEncoderFactory;
+import org.apache.tapestry5.services.ValueEncoderSource;
 
 @SuppressWarnings("all")
 public class ValueEncoderSourceImpl implements ValueEncoderSource, Runnable
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
index 8175500..60131cb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/AssetsModule.java
@@ -16,9 +16,18 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.AssetConstants;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.AssetSourceImpl;
+import org.apache.tapestry5.internal.services.ClasspathAssetAliasManagerImpl;
+import org.apache.tapestry5.internal.services.ClasspathAssetFactory;
+import org.apache.tapestry5.internal.services.ContextAssetFactory;
+import org.apache.tapestry5.internal.services.ExternalUrlAssetFactory;
+import org.apache.tapestry5.internal.services.IdentityAssetPathConverter;
+import org.apache.tapestry5.internal.services.RequestConstants;
+import org.apache.tapestry5.internal.services.ResourceStreamer;
 import org.apache.tapestry5.internal.services.assets.*;
 import org.apache.tapestry5.internal.services.messages.ClientLocalizationMessageResource;
 import org.apache.tapestry5.ioc.*;
@@ -26,7 +35,20 @@ import org.apache.tapestry5.ioc.annotations.*;
 import org.apache.tapestry5.ioc.services.ChainBuilder;
 import org.apache.tapestry5.ioc.services.FactoryDefaults;
 import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ApplicationGlobals;
+import org.apache.tapestry5.services.AssetFactory;
+import org.apache.tapestry5.services.AssetPathConverter;
+import org.apache.tapestry5.services.AssetRequestDispatcher;
+import org.apache.tapestry5.services.AssetSource;
+import org.apache.tapestry5.services.ClasspathAssetAliasManager;
+import org.apache.tapestry5.services.ClasspathAssetProtectionRule;
+import org.apache.tapestry5.services.ClasspathProvider;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ContextProvider;
+import org.apache.tapestry5.services.Core;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
 import org.apache.tapestry5.services.assets.*;
 import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
index 682fdc4..cdb7441 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/InternalModule.java
@@ -12,8 +12,57 @@
 
 package org.apache.tapestry5.modules;
 
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.pageload.PageLoaderImpl;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.AjaxPartialResponseRenderer;
+import org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl;
+import org.apache.tapestry5.internal.services.ClientPersistentFieldStorage;
+import org.apache.tapestry5.internal.services.ClientPersistentFieldStorageImpl;
+import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
+import org.apache.tapestry5.internal.services.ComponentModelSource;
+import org.apache.tapestry5.internal.services.CookieSink;
+import org.apache.tapestry5.internal.services.CookieSource;
+import org.apache.tapestry5.internal.services.EndOfRequestEventHub;
+import org.apache.tapestry5.internal.services.FormControlNameManager;
+import org.apache.tapestry5.internal.services.FormControlNameManagerImpl;
+import org.apache.tapestry5.internal.services.InternalComponentInvalidationEventHub;
+import org.apache.tapestry5.internal.services.InternalRequestGlobals;
+import org.apache.tapestry5.internal.services.InternalRequestGlobalsImpl;
+import org.apache.tapestry5.internal.services.LinkDecorationListener;
+import org.apache.tapestry5.internal.services.LinkSource;
+import org.apache.tapestry5.internal.services.LinkSourceImpl;
+import org.apache.tapestry5.internal.services.LocalizationSetterImpl;
+import org.apache.tapestry5.internal.services.PageContentTypeAnalyzer;
+import org.apache.tapestry5.internal.services.PageContentTypeAnalyzerImpl;
+import org.apache.tapestry5.internal.services.PageElementFactory;
+import org.apache.tapestry5.internal.services.PageElementFactoryImpl;
+import org.apache.tapestry5.internal.services.PageLoader;
+import org.apache.tapestry5.internal.services.PageMarkupRenderer;
+import org.apache.tapestry5.internal.services.PageMarkupRendererImpl;
+import org.apache.tapestry5.internal.services.PageRenderQueue;
+import org.apache.tapestry5.internal.services.PageRenderQueueImpl;
+import org.apache.tapestry5.internal.services.PageResponseRenderer;
+import org.apache.tapestry5.internal.services.PageResponseRendererImpl;
+import org.apache.tapestry5.internal.services.PageSource;
+import org.apache.tapestry5.internal.services.PageSourceImpl;
+import org.apache.tapestry5.internal.services.PersistentFieldManager;
+import org.apache.tapestry5.internal.services.PersistentFieldManagerImpl;
+import org.apache.tapestry5.internal.services.ReloadHelper;
+import org.apache.tapestry5.internal.services.ReloadHelperImpl;
+import org.apache.tapestry5.internal.services.RequestPageCache;
+import org.apache.tapestry5.internal.services.RequestPageCacheImpl;
+import org.apache.tapestry5.internal.services.RequestSecurityManager;
+import org.apache.tapestry5.internal.services.RequestSecurityManagerImpl;
+import org.apache.tapestry5.internal.services.ResourceDigestManager;
+import org.apache.tapestry5.internal.services.ResourceDigestManagerImpl;
+import org.apache.tapestry5.internal.services.ResourceStreamer;
+import org.apache.tapestry5.internal.services.ResourceStreamerImpl;
+import org.apache.tapestry5.internal.services.ResponseCompressionAnalyzerImpl;
+import org.apache.tapestry5.internal.services.TemplateParser;
+import org.apache.tapestry5.internal.services.TemplateParserImpl;
+import org.apache.tapestry5.internal.services.UnknownActivationContextHandler;
+import org.apache.tapestry5.internal.services.UnknownActivationContextHandlerImpl;
 import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
 import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
 import org.apache.tapestry5.internal.structure.ComponentPageElementResourcesSource;
@@ -23,7 +72,12 @@ import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.Core;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
 import org.apache.tapestry5.services.transform.ControlledPackageType;
 
 import javax.servlet.http.Cookie;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
index 9ecddaa..56e996a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
@@ -19,10 +19,20 @@ import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.annotations.ContentType;
 import org.apache.tapestry5.beaneditor.DataTypeConstants;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.*;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.corelib.data.SecureOption;
 import org.apache.tapestry5.grid.GridConstants;
 import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.internal.*;
+import org.apache.tapestry5.internal.ComponentOverrideImpl;
+import org.apache.tapestry5.internal.DefaultNullFieldStrategy;
+import org.apache.tapestry5.internal.DefaultValueLabelProvider;
+import org.apache.tapestry5.internal.InternalConstants;
+import org.apache.tapestry5.internal.InternalSymbols;
+import org.apache.tapestry5.internal.PropertyOverridesImpl;
+import org.apache.tapestry5.internal.TapestryInternalUtils;
+import org.apache.tapestry5.internal.ZeroNullFieldStrategy;
 import org.apache.tapestry5.internal.alerts.AlertManagerImpl;
 import org.apache.tapestry5.internal.beaneditor.EnvironmentMessages;
 import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java b/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
index 692a826..2665378 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
@@ -18,8 +18,10 @@ import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Id;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.services.MapMessages;
 import org.apache.tapestry5.internal.services.MarkupWriterImpl;
 import org.apache.tapestry5.ioc.*;
@@ -32,7 +34,39 @@ import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.model.ParameterModel;
 import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ApplicationStateCreator;
+import org.apache.tapestry5.services.ApplicationStateManager;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
+import org.apache.tapestry5.services.AssetFactory;
+import org.apache.tapestry5.services.AssetSource;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.BindingFactory;
+import org.apache.tapestry5.services.BindingSource;
+import org.apache.tapestry5.services.ClasspathAssetAliasManager;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.Context;
+import org.apache.tapestry5.services.Environment;
+import org.apache.tapestry5.services.FieldTranslatorSource;
+import org.apache.tapestry5.services.FieldValidatorSource;
+import org.apache.tapestry5.services.FormSupport;
+import org.apache.tapestry5.services.Heartbeat;
+import org.apache.tapestry5.services.Html5Support;
+import org.apache.tapestry5.services.HttpServletRequestHandler;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderLinkSource;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestGlobals;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.ResourceDigestGenerator;
+import org.apache.tapestry5.services.Response;
+import org.apache.tapestry5.services.Session;
+import org.apache.tapestry5.services.TranslatorSource;
+import org.apache.tapestry5.services.ValidationConstraintGenerator;
+import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 import org.easymock.IAnswer;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
index 80c4a1e..f7428a2 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
@@ -13,8 +13,8 @@
 package org.apache.tapestry5.corelib.base;
 
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
index af3ba5f..53d66ce 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
@@ -22,7 +22,8 @@ import static org.easymock.EasyMock.anyObject;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.integration.app1.data.RegistrationData;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.BeanValidationContextImpl;
@@ -30,7 +31,6 @@ import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.BeanEditContext;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.easymock.EasyMock;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
index d167874..fd7482d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.TapestryException;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
index 19eeee7..56f56ce 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.integration.app1.base;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Retain;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.corelib.components.BeanEditForm;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PropertyConduitSource;
 
 /**
  * For testing TAPESTRY-1518.
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
index cf1d1ff..82b9934 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
@@ -15,13 +15,13 @@
 package org.apache.tapestry5.integration.app1.pages;
 
 import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.corelib.components.Grid;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.integration.app1.services.MusicLibrary;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java
index a89c039..0df26b0 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyGrid.java
@@ -20,13 +20,13 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Random;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 public class EmptyGrid
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java
index bf904b6..56eecef 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridInLoopDemo.java
@@ -1,10 +1,10 @@
 package org.apache.tapestry5.integration.app1.pages;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.Collection;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
index 563fc46..84f1f8a 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.integration.app1.pages;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.integration.app1.data.SimpleTrack;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.integration.app1.services.MusicLibrary;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
index ae66e7f..5dc5d3f 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal;
 
 /**
- * Used as test when setting the order of properties in a {@link org.apache.tapestry5.beaneditor.BeanModel}.
+ * Used as test when setting the order of properties in a {@link org.apache.tapestry5.beanmodel.BeanModel}.
  */
 public class DataBean
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
index 995fa33..ad41dba 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
@@ -16,6 +16,8 @@ package org.apache.tapestry5.internal;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.beaneditor.Width;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Resource;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
index f8db28b..59efbec 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
@@ -14,8 +14,9 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelUtils;
+import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.easymock.EasyMock;
 import org.testng.annotations.DataProvider;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
index f0968ca..ee2fc93 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
-import org.apache.tapestry5.PropertyConduit;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
index 3305ff4..f90ab07 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.internal.grid;
 
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.SortConstraint;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java
index 83b1067..9d6c871 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AbstractBeanModelSourceImplTest.java
@@ -14,18 +14,19 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.BeanModelSourceBuilder;
-import org.apache.tapestry5.beaneditor.PropertyModel;
 import org.apache.tapestry5.beaneditor.RelativePosition;
 import org.apache.tapestry5.beaneditor.Sortable;
+import org.apache.tapestry5.beanmodel.BeanModel;
+import org.apache.tapestry5.beanmodel.BeanModelSourceBuilder;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.beanmodel.internal.services.PropertyExpressionException;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.internal.PropertyOrderBean;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
 import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.BeanModelSource;
 import org.easymock.EasyMock;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
index f9c69a2..2e267e6 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
@@ -14,11 +14,16 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ApplicationStateContribution;
+import org.apache.tapestry5.services.ApplicationStateCreator;
+import org.apache.tapestry5.services.ApplicationStateManager;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
+import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
 import org.easymock.EasyMock;
 import static org.easymock.EasyMock.eq;
 import static org.easymock.EasyMock.isA;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
index a70eab0..52cfd07 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
@@ -15,11 +15,16 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Block;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BeanBlockContribution;
+import org.apache.tapestry5.services.BeanBlockOverrideSource;
+import org.apache.tapestry5.services.BeanBlockSource;
+import org.apache.tapestry5.services.DisplayBlockContribution;
+import org.apache.tapestry5.services.EditBlockContribution;
 import org.testng.annotations.Test;
 
 import java.util.Collection;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java
index 78502e6..af3e755 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceBuilderTest.java
@@ -13,8 +13,8 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.beaneditor.BeanModelSourceBuilder;
-import org.apache.tapestry5.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.BeanModelSourceBuilder;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.testng.annotations.Test;
 
 /**
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
index a23a3a5..56b8fcf 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
@@ -13,7 +13,7 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.services.BeanModelSource;
+import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 
 /**
  * Tests a BeanModelSource created using Tapestry-IoC.
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
index b3f17a1..a9cb726 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
@@ -14,11 +14,21 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.URLEventContext;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentRequestHandler;
+import org.apache.tapestry5.services.ContextPathEncoder;
+import org.apache.tapestry5.services.ContextValueEncoder;
+import org.apache.tapestry5.services.Dispatcher;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.security.ClientWhitelist;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
index 78e71c5..9c1df38 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
@@ -18,11 +18,20 @@ import org.apache.tapestry5.Link;
 import org.apache.tapestry5.LinkSecurity;
 import org.apache.tapestry5.MetaDataConstants;
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ContextPathEncoder;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.security.ClientWhitelist;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
index fd4d8f9..84f01c5 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
@@ -20,11 +20,17 @@ import java.util.List;
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.RequestGlobals;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
index a861883..a0cc8e3 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
@@ -21,18 +21,19 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.tapestry5.Block;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyConduit2;
 import org.apache.tapestry5.beaneditor.NonVisual;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.beanmodel.PropertyConduit2;
+import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
+import org.apache.tapestry5.beanmodel.internal.services.Invariant;
+import org.apache.tapestry5.beanmodel.services.PropertyConduitSource;
 import org.apache.tapestry5.integration.app1.data.IntegerHolder;
-import org.apache.tapestry5.internal.InternalPropertyConduit;
 import org.apache.tapestry5.internal.bindings.PropBindingFactoryTest;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.internal.util.IntegerRange;
 import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.PropertyConduitSource;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
index 0157537..9690723 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
@@ -17,9 +17,14 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.LinkSecurity;
 import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventLinkEncoder;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.PageRenderRequestParameters;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.Response;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
index 24fdf32..e4874dd 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
@@ -14,8 +14,13 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.Context;
+import org.apache.tapestry5.services.Request;
+import org.apache.tapestry5.services.RequestFilter;
+import org.apache.tapestry5.services.RequestHandler;
+import org.apache.tapestry5.services.Response;
 import org.testng.annotations.Test;
 
 import javax.servlet.http.HttpServletResponse;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
index 92b109c..73b94d3 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
@@ -18,9 +18,21 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.ComponentResourcesCommon;
 import org.apache.tapestry5.ContentType;
 import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.beanmodel.internal.services.*;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.internal.services.*;
+import org.apache.tapestry5.internal.services.ComponentModelSource;
+import org.apache.tapestry5.internal.services.DocumentLinker;
+import org.apache.tapestry5.internal.services.ForceDevelopmentModeModule;
+import org.apache.tapestry5.internal.services.Instantiator;
+import org.apache.tapestry5.internal.services.LinkSource;
+import org.apache.tapestry5.internal.services.PageContentTypeAnalyzer;
+import org.apache.tapestry5.internal.services.PageRenderQueue;
+import org.apache.tapestry5.internal.services.PageResponseRenderer;
+import org.apache.tapestry5.internal.services.RequestPageCache;
+import org.apache.tapestry5.internal.services.RequestSecurityManager;
+import org.apache.tapestry5.internal.services.TemplateParser;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
 import org.apache.tapestry5.internal.structure.Page;
@@ -37,7 +49,14 @@ import org.apache.tapestry5.root.FieldComponent;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BaseURLSource;
+import org.apache.tapestry5.services.ClientBehaviorSupport;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.InvalidationListener;
+import org.apache.tapestry5.services.LinkCreationListener2;
+import org.apache.tapestry5.services.LocalizationSetter;
+import org.apache.tapestry5.services.MetaDataLocator;
+import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.easymock.EasyMock;
 import org.testng.annotations.AfterMethod;
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java
index 13f9ded..7e14d99 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java
+++ b/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/modules/TapestryIOCModule.java
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.ioc.modules;
 
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.ioc.*;
 import org.apache.tapestry5.ioc.annotations.*;
diff --git a/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy b/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy
index 9b7a4f2..1e8e37b 100644
--- a/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy
+++ b/tapestry-ioc/src/test/groovy/ioc/specs/ExceptionUtilsSpec.groovy
@@ -1,6 +1,6 @@
 package ioc.specs
 
-import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl
 import org.apache.tapestry5.ioc.internal.util.TapestryException
 import org.apache.tapestry5.ioc.util.ExceptionUtils
 import org.apache.tapestry5.ioc.util.ExceptionWrapper
diff --git a/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy b/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy
index 3c63806..0e8aabf 100644
--- a/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy
+++ b/tapestry-ioc/src/test/groovy/ioc/specs/PropertyAccessImplSpec.groovy
@@ -7,6 +7,7 @@ import java.lang.reflect.Method
 
 import org.apache.tapestry5.beaneditor.DataType
 import org.apache.tapestry5.beaneditor.Validate
+import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl
 import org.apache.tapestry5.ioc.annotations.Scope
 import org.apache.tapestry5.ioc.internal.services.*
 import org.apache.tapestry5.ioc.internal.util.Pair
diff --git a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java
index 0327399..ca63104 100644
--- a/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java
+++ b/tapestry-kaptcha/src/main/java/org/apache/tapestry5/kaptcha/modules/KaptchaModule.java
@@ -14,6 +14,7 @@
 
 package org.apache.tapestry5.kaptcha.modules;
 
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.ioc.*;
 import org.apache.tapestry5.ioc.annotations.Contribute;
@@ -24,7 +25,12 @@ import org.apache.tapestry5.kaptcha.KaptchaSymbolConstants;
 import org.apache.tapestry5.kaptcha.internal.services.KaptchaDataTypeAnalyzer;
 import org.apache.tapestry5.kaptcha.internal.services.KaptchaProducerImpl;
 import org.apache.tapestry5.kaptcha.services.KaptchaProducer;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.BeanBlockContribution;
+import org.apache.tapestry5.services.BeanBlockSource;
+import org.apache.tapestry5.services.ComponentClassResolver;
+import org.apache.tapestry5.services.DataTypeAnalyzer;
+import org.apache.tapestry5.services.EditBlockContribution;
+import org.apache.tapestry5.services.LibraryMapping;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
 
 /**
diff --git a/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java b/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
index 0ae3537..b92a66e 100644
--- a/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
+++ b/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
@@ -16,10 +16,16 @@ package org.apache.tapestry5.upload.internal.services;
 
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.tapestry5.annotations.Events;
+import org.apache.tapestry5.beanmodel.services.*;
 import org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.ComponentEventRequestFilter;
+import org.apache.tapestry5.services.ComponentEventRequestHandler;
+import org.apache.tapestry5.services.ComponentEventRequestParameters;
+import org.apache.tapestry5.services.ComponentEventResultProcessor;
+import org.apache.tapestry5.services.ComponentSource;
+import org.apache.tapestry5.services.Traditional;
 import org.apache.tapestry5.upload.services.MultipartDecoder;
 import org.apache.tapestry5.upload.services.UploadEvents;