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/09/12 14:56:29 UTC

[tapestry-5] 02/04: TAP5-2641: reorganizing commons under the same package

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

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

commit 16adb0ceb6ecdd97908693d95e4464097ce87016
Author: Thiago H. de Paula Figueiredo <th...@arsmachina.com.br>
AuthorDate: Sun Sep 6 14:12:45 2020 -0300

    TAP5-2641: reorganizing commons under the same package
---
 .gitignore                                         |  1 +
 .../org/apache/tapestry5/beanmodel/BeanModel.java  |  2 +-
 .../beanmodel/BeanModelSourceBuilder.java          | 28 ++++----
 .../apache/tapestry5/beanmodel/BeanModelUtils.java |  2 +-
 .../tapestry5/beanmodel/PropertyConduit.java       |  2 +-
 .../apache/tapestry5/beanmodel/PropertyModel.java  |  4 +-
 .../internal/beanmodel/BeanModelImpl.java          | 14 ++--
 .../internal/beanmodel/PropertyModelImpl.java      |  5 +-
 .../internal/services/BeanModelSourceImpl.java     | 11 ++-
 .../services/ClassPropertyAdapterImpl.java         | 14 ++--
 .../services/CoercingPropertyConduitWrapper.java   |  2 +-
 .../internal/services/LiteralPropertyConduit.java  |  4 +-
 .../internal/services/PropertyAccessImpl.java      |  6 +-
 .../internal/services/PropertyAdapterImpl.java     | 18 ++---
 .../internal/services/PropertyConduitDelegate.java |  6 +-
 .../services/PropertyConduitSourceImpl.java        | 25 ++++---
 .../beanmodel/services/BeanModelSource.java        |  6 +-
 .../services/PlasticProxyFactoryImpl.java          | 12 ++--
 .../beanmodel/services/PropertyConduitSource.java  |  2 +-
 .../{ioc => commons}/AnnotationProvider.java       |  2 +-
 .../tapestry5/{ioc => commons}/Configuration.java  |  2 +-
 .../tapestry5/{ioc => commons}/Locatable.java      |  2 +-
 .../tapestry5/{ioc => commons}/Location.java       |  2 +-
 .../{ioc => commons}/MappedConfiguration.java      |  2 +-
 .../{ioc => commons}/MessageFormatter.java         |  2 +-
 .../tapestry5/{ioc => commons}/Messages.java       |  2 +-
 .../tapestry5/{ioc => commons}/ObjectCreator.java  |  2 +-
 .../tapestry5/{ioc => commons}/ObjectLocator.java  |  2 +-
 .../apache/tapestry5/commons}/ObjectProvider.java  |  2 +-
 .../{ioc => commons}/OrderedConfiguration.java     |  2 +-
 .../tapestry5/{ioc => commons}/Resource.java       |  2 +-
 .../internal/BasicDataTypeAnalyzers.java           | 14 ++--
 .../internal/BasicTypeCoercions.java               | 12 ++--
 .../internal/NullAnnotationProvider.java           |  6 +-
 .../AccessableObjectAnnotationProvider.java        |  6 +-
 .../services/AnnotationDataTypeAnalyzer.java       |  6 +-
 .../internal/services/AnnotationProviderChain.java |  4 +-
 .../internal/services/CompoundCoercion.java        |  4 +-
 .../internal/services/DefaultDataTypeAnalyzer.java | 10 +--
 .../internal/services/GenericsResolverImpl.java    |  4 +-
 .../internal/services/ServiceMessages.java         |  8 +--
 .../internal/services/StringInterner.java          |  2 +-
 .../internal/services/StringInternerImpl.java      | 10 +--
 .../internal/services/StringLocation.java          |  6 +-
 .../internal/services/TypeCoercerImpl.java         | 34 +++++----
 .../internal/util/GenericsUtils.java               |  4 +-
 .../internal/util/InheritanceSearch.java           |  7 +-
 .../internal/util/InternalCommonsUtils.java        | 13 ++--
 .../internal/util/LockSupport.java                 |  2 +-
 .../internal/util/MessageFormatterImpl.java        |  8 +--
 .../internal/util/MessagesImpl.java                | 13 ++--
 .../internal/util/TapestryException.java           |  6 +-
 .../services/ClassPropertyAdapter.java             |  2 +-
 .../{ioc => commons}/services/Coercion.java        |  2 +-
 .../{ioc => commons}/services/CoercionTuple.java   |  2 +-
 .../{ => commons}/services/DataTypeAnalyzer.java   |  3 +-
 .../{ => commons}/services/GenericsResolver.java   |  4 +-
 .../services/InvalidationEventHub.java             |  2 +-
 .../services/InvalidationListener.java             |  2 +-
 .../services/PlasticProxyFactory.java              | 12 ++--
 .../{ioc => commons}/services/PropertyAccess.java  |  2 +-
 .../{ioc => commons}/services/PropertyAdapter.java |  6 +-
 .../{ioc => commons}/services/TypeCoercer.java     |  2 +-
 .../{ioc => commons}/util/AbstractMessages.java    | 11 ++-
 .../{ioc => commons}/util/AvailableValues.java     |  5 +-
 .../{ioc => commons}/util/CaseInsensitiveMap.java  |  2 +-
 .../util/CollectionFactory.java                    | 17 +++--
 .../{ioc => commons}/util/ExceptionUtils.java      |  6 +-
 .../{internal => commons}/util/IntegerRange.java   |  2 +-
 .../{internal => commons}/util/MultiKey.java       |  2 +-
 .../tapestry5/{ioc => commons}/util/Stack.java     |  4 +-
 .../{ioc => commons}/util/StrategyRegistry.java    |  7 +-
 .../{ => commons}/util/StringToEnumCoercion.java   | 11 ++-
 .../{ioc => commons}/util/TimeInterval.java        |  7 +-
 .../util/UnknownValueException.java                |  4 +-
 .../GuavaGenericsResolver.java                     |  2 +-
 .../AbstractBeanModelSourceImplTest.java           |  4 +-
 .../beanvalidator/modules/BeanValidatorModule.java |  6 +-
 .../tapestry5/internal/beanvalidator/BaseCCD.java  |  4 +-
 .../internal/beanvalidator/BeanFieldValidator.java |  2 +-
 .../BeanFieldValidatorDefaultSource.java           |  4 +-
 .../ClientConstraintDescriptorImpl.java            |  4 +-
 .../org/example/testapp/services/AppModule.java    |  6 +-
 .../tapestry5/clojure/modules/ClojureModule.java   |  2 +-
 .../internal/clojure/ClojureBuilderImpl.java       |  4 +-
 .../clojure/tests/ClojureBuilderSpec.groovy        |  1 +
 .../src/main/java/org/apache/tapestry5/Asset.java  |  2 +-
 .../main/java/org/apache/tapestry5/Binding.java    |  2 +-
 .../apache/tapestry5/BlockNotFoundException.java   |  4 +-
 .../org/apache/tapestry5/ComponentResources.java   | 10 +--
 .../apache/tapestry5/ComponentResourcesCommon.java |  2 +-
 .../java/org/apache/tapestry5/ContentType.java     |  2 +-
 .../java/org/apache/tapestry5/EventContext.java    |  2 +-
 .../java/org/apache/tapestry5/MarkupUtils.java     |  4 +-
 .../org/apache/tapestry5/PropertyOverrides.java    |  2 +-
 .../apache/tapestry5/ValidationTrackerImpl.java    |  2 +-
 .../main/java/org/apache/tapestry5/Validator.java  |  2 +-
 .../java/org/apache/tapestry5/ValueEncoder.java    |  2 +-
 .../org/apache/tapestry5/ajax/MultiZoneUpdate.java |  2 +-
 .../org/apache/tapestry5/alerts/AlertStorage.java  |  4 +-
 .../tapestry5/corelib/base/AbstractField.java      |  2 +-
 .../corelib/base/AbstractPropertyOutput.java       |  4 +-
 .../tapestry5/corelib/base/AbstractTextField.java  |  2 +-
 .../tapestry5/corelib/components/AjaxFormLoop.java |  2 +-
 .../tapestry5/corelib/components/BeanEditor.java   |  2 +-
 .../tapestry5/corelib/components/Checklist.java    |  2 +-
 .../tapestry5/corelib/components/DateField.java    |  2 +-
 .../tapestry5/corelib/components/Dynamic.java      |  4 +-
 .../tapestry5/corelib/components/Errors.java       |  2 +-
 .../apache/tapestry5/corelib/components/Form.java  | 10 +--
 .../apache/tapestry5/corelib/components/Grid.java  |  4 +-
 .../tapestry5/corelib/components/GridColumns.java  |  2 +-
 .../tapestry5/corelib/components/GridPager.java    |  2 +-
 .../corelib/components/Html5DateField.java         |  2 +-
 .../apache/tapestry5/corelib/components/Loop.java  |  2 +-
 .../corelib/components/PropertyEditor.java         |  4 +-
 .../tapestry5/corelib/components/RadioGroup.java   |  2 +-
 .../tapestry5/corelib/components/Select.java       |  4 +-
 .../corelib/internal/FormSupportImpl.java          |  6 +-
 .../tapestry5/corelib/mixins/Autocomplete.java     |  2 +-
 .../tapestry5/corelib/pages/ExceptionReport.java   |  2 +-
 .../tapestry5/corelib/pages/PageCatalog.java       |  4 +-
 .../corelib/pages/PropertyEditBlocks.java          |  2 +-
 .../tapestry5/corelib/pages/ServiceStatus.java     |  2 +-
 .../apache/tapestry5/dom/DefaultMarkupModel.java   |  4 +-
 .../java/org/apache/tapestry5/dom/Document.java    |  2 +-
 .../java/org/apache/tapestry5/dom/Element.java     |  4 +-
 .../org/apache/tapestry5/dom/Html5MarkupModel.java |  2 +-
 .../java/org/apache/tapestry5/dom/MapHolder.java   |  4 +-
 .../internal/AbstractContributionDef.java          |  4 +-
 .../internal/ContextResourceSymbolProvider.java    |  2 +-
 .../internal/DefaultValueLabelProvider.java        |  2 +-
 .../tapestry5/internal/InternalConstants.java      |  2 +-
 .../tapestry5/internal/PropertyOverridesImpl.java  |  2 +-
 .../internal/ServletContextSymbolProvider.java     |  2 +-
 .../tapestry5/internal/SyntheticModuleDef.java     |  2 +-
 .../SyntheticSymbolSourceContributionDef.java      |  2 +-
 .../tapestry5/internal/TapestryAppInitializer.java |  7 +-
 .../tapestry5/internal/TapestryInternalUtils.java  |  6 +-
 .../internal/beaneditor/EnvironmentMessages.java   |  2 +-
 .../beaneditor/MessagesConstraintGenerator.java    |  4 +-
 .../PrimitiveFieldConstraintGenerator.java         |  2 +-
 .../ValidateAnnotationConstraintGenerator.java     |  2 +-
 .../internal/bindings/AbstractBinding.java         |  4 +-
 .../tapestry5/internal/bindings/AssetBinding.java  |  2 +-
 .../internal/bindings/AssetBindingFactory.java     |  2 +-
 .../tapestry5/internal/bindings/BlockBinding.java  |  2 +-
 .../internal/bindings/BlockBindingFactory.java     |  2 +-
 .../internal/bindings/ComponentBinding.java        |  2 +-
 .../internal/bindings/ComponentBindingFactory.java |  2 +-
 .../internal/bindings/ContextBindingFactory.java   |  2 +-
 .../internal/bindings/InvariantBinding.java        |  2 +-
 .../internal/bindings/LiteralBinding.java          |  4 +-
 .../internal/bindings/LiteralBindingFactory.java   |  2 +-
 .../internal/bindings/MessageBindingFactory.java   |  2 +-
 .../bindings/NullFieldStrategyBindingFactory.java  |  2 +-
 .../tapestry5/internal/bindings/PropBinding.java   |  4 +-
 .../internal/bindings/PropBindingFactory.java      |  4 +-
 .../internal/bindings/RenderVariableBinding.java   |  2 +-
 .../bindings/RenderVariableBindingFactory.java     |  2 +-
 .../internal/bindings/SymbolBindingFactory.java    |  2 +-
 .../internal/bindings/TranslateBindingFactory.java |  4 +-
 .../internal/bindings/ValidateBindingFactory.java  |  6 +-
 .../dynamic/DynamicTemplateParserImpl.java         |  4 +-
 .../internal/dynamic/DynamicTemplateSaxParser.java | 10 +--
 .../internal/event/InvalidationEventHubImpl.java   |  8 +--
 .../internal/grid/CollectionGridDataSource.java    |  2 +-
 .../internal/model/MutableComponentModelImpl.java  |  6 +-
 .../model/MutableEmbeddedComponentModelImpl.java   |  4 +-
 .../internal/pageload/AssemblerContext.java        |  2 +-
 .../internal/pageload/ComponentAssembler.java      |  4 +-
 .../internal/pageload/ComponentAssemblerImpl.java  | 10 +--
 .../pageload/DefaultComponentResourceLocator.java  |  2 +-
 .../pageload/EmbeddedComponentAssembler.java       |  2 +-
 .../pageload/EmbeddedComponentAssemblerImpl.java   |  6 +-
 .../tapestry5/internal/pageload/PageAssembly.java  |  8 +--
 .../internal/pageload/PageLoaderImpl.java          | 16 ++---
 .../internal/pageload/PagePreloaderImpl.java       |  4 +-
 .../tapestry5/internal/parser/AttributeToken.java  |  2 +-
 .../tapestry5/internal/parser/BlockToken.java      |  2 +-
 .../tapestry5/internal/parser/BodyToken.java       |  2 +-
 .../tapestry5/internal/parser/CDATAToken.java      |  2 +-
 .../tapestry5/internal/parser/CommentToken.java    |  2 +-
 .../internal/parser/ComponentTemplate.java         |  6 +-
 .../internal/parser/ComponentTemplateImpl.java     | 10 +--
 .../apache/tapestry5/internal/parser/DTDToken.java |  2 +-
 .../parser/DefineNamespacePrefixToken.java         |  2 +-
 .../tapestry5/internal/parser/EndElementToken.java |  2 +-
 .../tapestry5/internal/parser/ExpansionToken.java  |  2 +-
 .../internal/parser/ExtensionPointToken.java       |  2 +-
 .../tapestry5/internal/parser/ParameterToken.java  |  2 +-
 .../internal/parser/StartComponentToken.java       |  2 +-
 .../internal/parser/StartElementToken.java         |  2 +-
 .../tapestry5/internal/parser/TemplateToken.java   |  2 +-
 .../tapestry5/internal/parser/TextToken.java       |  2 +-
 .../renderers/AvailableValuesRenderer.java         |  2 +-
 .../renderers/ComponentResourcesRenderer.java      |  2 +-
 .../internal/renderers/LocationRenderer.java       |  6 +-
 .../internal/renderers/RequestRenderer.java        |  2 +-
 .../internal/services/AbstractAssetFactory.java    |  4 +-
 .../AbstractSessionPersistentFieldStrategy.java    |  2 +-
 .../services/AjaxComponentEventRequestHandler.java |  2 +-
 .../ApplicationMessageCatalogObjectProvider.java   | 10 +--
 .../services/ApplicationStateManagerImpl.java      |  4 +-
 .../internal/services/ArrayEventContext.java       |  2 +-
 .../internal/services/AssetDispatcher.java         |  2 +-
 .../internal/services/AssetInjectionProvider.java  |  2 +-
 .../internal/services/AssetObjectProvider.java     |  8 +--
 .../internal/services/AssetSourceImpl.java         |  8 +--
 .../services/AttributeExpansionBinding.java        |  2 +-
 .../services/BeanBlockOverrideSourceImpl.java      |  2 +-
 .../internal/services/BindingSourceImpl.java       |  7 +-
 .../internal/services/BlockInjectionProvider.java  |  2 +-
 .../internal/services/CheckForUpdatesFilter.java   |  2 +-
 .../services/ClasspathAssetAliasManagerImpl.java   |  8 +--
 .../internal/services/ClasspathAssetFactory.java   |  2 +-
 .../services/ClientPersistentFieldStorageImpl.java |  2 +-
 .../internal/services/ClusteredSessionImpl.java    |  2 +-
 .../services/CommonResourcesInjectionProvider.java |  6 +-
 .../internal/services/ComponentClassCacheImpl.java | 10 +--
 .../services/ComponentClassResolverImpl.java       |  8 +--
 .../services/ComponentDefaultProviderImpl.java     |  4 +-
 .../services/ComponentEventLinkEncoderImpl.java    |  2 +-
 .../services/ComponentEventRequestHandlerImpl.java |  2 +-
 .../services/ComponentInstantiatorSource.java      |  4 +-
 .../services/ComponentInstantiatorSourceImpl.java  |  8 +--
 .../services/ComponentMessagesSourceImpl.java      |  6 +-
 .../internal/services/ComponentTemplateSource.java |  2 +-
 .../services/ComponentTemplateSourceImpl.java      | 10 +--
 .../internal/services/ContextAssetFactory.java     |  2 +-
 .../tapestry5/internal/services/ContextImpl.java   |  4 +-
 .../internal/services/ContextPathEncoderImpl.java  |  2 +-
 .../internal/services/ContextResource.java         |  2 +-
 .../tapestry5/internal/services/CookiesImpl.java   |  2 +-
 .../services/DefaultInjectionProvider.java         |  4 +-
 .../services/DefaultRequestExceptionHandler.java   |  4 +-
 .../internal/services/DocumentLinkerImpl.java      |  2 +-
 .../services/EndOfRequestEventHubImpl.java         |  2 +-
 .../internal/services/EnumValueEncoderFactory.java |  2 +-
 .../internal/services/EnumValueLabelProvider.java  |  2 +-
 .../internal/services/EnvironmentImpl.java         |  6 +-
 .../services/EnvironmentalShadowBuilderImpl.java   |  2 +-
 .../internal/services/ExternalUrlAssetFactory.java |  4 +-
 .../internal/services/FieldTranslatorImpl.java     |  2 +-
 .../services/FieldTranslatorSourceImpl.java        |  6 +-
 .../services/FieldValidationSupportImpl.java       |  6 +-
 .../services/FieldValidatorDefaultSourceImpl.java  |  7 +-
 .../internal/services/FieldValidatorImpl.java      |  2 +-
 .../services/FieldValidatorSourceImpl.java         | 12 ++--
 .../services/FormControlNameManagerImpl.java       |  2 +-
 .../tapestry5/internal/services/HeartbeatImpl.java |  6 +-
 .../InternalComponentInvalidationEventHub.java     |  4 +-
 .../internal/services/LinkSourceImpl.java          |  4 +-
 .../internal/services/LocalizationSetterImpl.java  |  2 +-
 .../tapestry5/internal/services/MapMessages.java   | 11 +--
 .../internal/services/MessagesBundle.java          |  4 +-
 .../internal/services/MessagesSource.java          |  4 +-
 .../internal/services/MessagesSourceImpl.java      | 10 +--
 .../internal/services/MetaDataLocatorImpl.java     |  6 +-
 .../internal/services/ModuleInitsManager.java      |  2 +-
 .../services/NullFieldStrategySourceImpl.java      |  4 +-
 .../ObjectComponentEventResultProcessor.java       |  4 +-
 .../PageActivationContextCollectorImpl.java        |  8 +--
 .../internal/services/PageElementFactory.java      |  2 +-
 .../internal/services/PageElementFactoryImpl.java  | 10 +--
 .../internal/services/PageRenderQueueImpl.java     |  4 +-
 .../tapestry5/internal/services/PageSource.java    |  2 +-
 .../internal/services/PageSourceImpl.java          |  4 +-
 .../services/PartialTemplateRendererImpl.java      |  2 +-
 .../services/PersistentFieldBundleImpl.java        |  2 +-
 .../services/PersistentFieldManagerImpl.java       |  6 +-
 .../internal/services/PersistentLocaleImpl.java    |  2 +-
 .../ProductionModeUnknownComponentFilter.java      |  2 +-
 .../services/PropertyValueLabelProvider.java       |  6 +-
 .../internal/services/ReloadHelperImpl.java        |  2 +-
 .../internal/services/RenderQueueException.java    |  2 +-
 .../internal/services/RenderQueueImpl.java         |  6 +-
 .../internal/services/RequestPageCacheImpl.java    |  4 +-
 .../internal/services/ResourceDigestManager.java   |  4 +-
 .../services/ResourceDigestManagerImpl.java        |  4 +-
 .../internal/services/ResourceStreamer.java        |  4 +-
 .../internal/services/ResourceStreamerImpl.java    |  2 +-
 .../internal/services/SaxTemplateParser.java       | 10 +--
 .../internal/services/SelectModelFactoryImpl.java  |  4 +-
 .../services/ServiceAnnotationObjectProvider.java  |  6 +-
 .../services/ServiceInjectionProvider.java         |  2 +-
 .../tapestry5/internal/services/SessionImpl.java   |  2 +-
 .../services/StreamPageContentResultProcessor.java |  2 +-
 .../internal/services/TemplateParser.java          |  2 +-
 .../internal/services/TemplateParserImpl.java      |  2 +-
 .../internal/services/TranslatorSourceImpl.java    | 10 +--
 .../services/TypeCoercedValueEncoderFactory.java   |  4 +-
 .../tapestry5/internal/services/UrlAsset.java      |  2 +-
 .../tapestry5/internal/services/UrlResource.java   |  2 +-
 .../ValidationConstraintGeneratorImpl.java         |  4 +-
 .../internal/services/ValueEncoderSourceImpl.java  |  6 +-
 .../tapestry5/internal/services/XMLToken.java      |  2 +-
 .../internal/services/XMLTokenStream.java          |  8 +--
 .../services/ajax/AjaxResponseRendererImpl.java    |  2 +-
 .../services/ajax/JavaScriptSupportImpl.java       |  2 +-
 .../ajax/MultiZoneUpdateEventResultProcessor.java  |  4 +-
 .../assets/AssetChecksumGeneratorImpl.java         |  4 +-
 .../internal/services/assets/CSSURLRewriter.java   |  2 +-
 .../internal/services/assets/ChecksumPath.java     |  2 +-
 .../assets/ClasspathAssetRequestHandler.java       |  2 +-
 .../services/assets/ContentTypeAnalyzerImpl.java   |  2 +-
 .../assets/ContextAssetRequestHandler.java         |  2 +-
 .../internal/services/assets/DelegatingSRS.java    |  2 +-
 .../assets/JavaScriptStackAssemblerImpl.java       |  4 +-
 .../assets/JavaScriptStackMinimizeDisabler.java    |  2 +-
 .../services/assets/ResourceChangeTracker.java     |  6 +-
 .../services/assets/ResourceChangeTrackerImpl.java |  2 +-
 .../services/assets/SRSCachingInterceptor.java     |  4 +-
 .../services/assets/SRSCompressingInterceptor.java |  2 +-
 .../services/assets/SRSMinimizingInterceptor.java  |  2 +-
 .../assets/StreamableResourceSourceImpl.java       |  4 +-
 .../services/assets/UTF8ForTextAssets.java         |  2 +-
 .../compatibility/DeprecationWarningImpl.java      |  4 +-
 .../services/dashboard/DashboardManagerImpl.java   |  2 +-
 .../exceptions/ExceptionReportWriterImpl.java      |  2 +-
 .../services/exceptions/ExceptionReporterImpl.java |  2 +-
 .../JavaScriptStackPathConstructorImpl.java        |  4 +-
 .../javascript/JavaScriptStackSourceImpl.java      |  6 +-
 .../services/javascript/ModuleDispatcher.java      |  4 +-
 .../services/javascript/ModuleManagerImpl.java     |  6 +-
 .../ClientLocalizationMessageResource.java         |  4 +-
 .../messages/PropertiesFileParserImpl.java         |  4 +-
 .../services/templates/DefaultTemplateLocator.java |  2 +-
 .../services/templates/PageTemplateLocator.java    |  2 +-
 .../tapestry5/internal/structure/BlockImpl.java    |  4 +-
 .../internal/structure/ComponentPageElement.java   |  2 +-
 .../structure/ComponentPageElementImpl.java        | 10 +--
 .../structure/ComponentPageElementResources.java   |  6 +-
 .../ComponentPageElementResourcesImpl.java         |  8 ++-
 .../ComponentPageElementResourcesSourceImpl.java   |  4 +-
 .../internal/structure/ExpansionPageElement.java   |  2 +-
 .../structure/InternalComponentResourcesImpl.java  | 16 ++---
 .../apache/tapestry5/internal/structure/Page.java  |  2 +-
 .../tapestry5/internal/structure/PageImpl.java     |  6 +-
 .../structure/RenderPhaseEventHandler.java         |  2 +-
 .../internal/structure/StructureMessages.java      |  6 +-
 .../tapestry5/internal/test/PageTesterModule.java  |  6 +-
 .../tapestry5/internal/test/PageTesterSession.java |  5 +-
 .../internal/test/TestableCookieSinkSource.java    |  2 +-
 .../internal/test/TestableRequestImpl.java         |  2 +-
 .../internal/test/TestableResponseImpl.java        |  2 +-
 .../ActivationRequestParameterWorker.java          |  2 +-
 .../internal/transform/BindParameterWorker.java    | 12 ++--
 .../internal/transform/ComponentWorker.java        |  8 +--
 .../internal/transform/InjectComponentWorker.java  |  2 +-
 .../internal/transform/InjectNamedProvider.java    |  2 +-
 .../internal/transform/InjectPageWorker.java       |  2 +-
 .../internal/transform/InjectServiceWorker.java    |  2 +-
 .../tapestry5/internal/transform/InjectWorker.java |  4 +-
 .../internal/transform/OnEventWorker.java          |  8 +--
 .../transform/PageActivationContextWorker.java     |  2 +-
 .../internal/transform/ParameterConduit.java       |  2 +-
 .../internal/transform/ParameterWorker.java        |  6 +-
 .../transform/RenderPhaseMethodWorker.java         |  2 +-
 .../translator/NumericTranslatorSupportImpl.java   |  4 +-
 .../tapestry5/internal/util/MacOutputStream.java   |  2 +-
 .../internal/util/MessageCatalogResource.java      |  2 +-
 .../apache/tapestry5/internal/util/NamedSet.java   |  6 +-
 .../internal/util/RecomputableSupport.java         |  2 +-
 .../tapestry5/internal/util/VirtualResource.java   |  6 +-
 .../org/apache/tapestry5/model/ComponentModel.java |  2 +-
 .../tapestry5/model/EmbeddedComponentModel.java    |  2 +-
 .../tapestry5/model/MutableComponentModel.java     |  2 +-
 .../org/apache/tapestry5/modules/AssetsModule.java |  4 +-
 .../apache/tapestry5/modules/Bootstrap4Module.java |  2 +-
 .../apache/tapestry5/modules/DashboardModule.java  |  2 +-
 .../apache/tapestry5/modules/InternalModule.java   |  4 +-
 .../apache/tapestry5/modules/JavaScriptModule.java |  6 +-
 .../tapestry5/modules/NoBootstrapModule.java       |  2 +-
 .../apache/tapestry5/modules/TapestryModule.java   | 42 ++++++++---
 .../tapestry5/runtime/ComponentEventException.java |  4 +-
 .../services/ApplicationStateManager.java          |  2 +-
 .../apache/tapestry5/services/AssetFactory.java    |  2 +-
 .../org/apache/tapestry5/services/AssetSource.java |  4 +-
 .../apache/tapestry5/services/BeanBlockSource.java |  4 +-
 .../apache/tapestry5/services/BeanEditContext.java |  2 +-
 .../apache/tapestry5/services/BindingFactory.java  |  2 +-
 .../apache/tapestry5/services/BindingSource.java   |  2 +-
 .../services/ClasspathAssetAliasManager.java       |  4 +-
 .../tapestry5/services/ComponentClassResolver.java |  8 +--
 .../tapestry5/services/ComponentMessages.java      |  2 +-
 .../tapestry5/services/ComponentTemplates.java     |  2 +-
 .../tapestry5/services/ContextValueEncoder.java    |  2 +-
 .../tapestry5/services/FieldTranslatorSource.java  |  6 +-
 .../services/FieldValidatorDefaultSource.java      |  4 +-
 .../tapestry5/services/FieldValidatorSource.java   |  2 +-
 .../org/apache/tapestry5/services/FormSupport.java |  2 +-
 .../services/PartialTemplateRenderer.java          |  2 +-
 .../tapestry5/services/PropertyEditContext.java    |  4 +-
 .../tapestry5/services/PropertyOutputContext.java  |  2 +-
 .../services/ResourceDigestGenerator.java          |  2 +-
 .../apache/tapestry5/services/TransformUtils.java  |  2 +-
 .../tapestry5/services/TranslatorSource.java       |  2 +-
 .../services/ValidationConstraintGenerator.java    |  4 +-
 .../services/ajax/AjaxResponseRenderer.java        |  2 +-
 .../services/assets/AssetChecksumGenerator.java    |  6 +-
 .../services/assets/AssetPathConstructor.java      |  2 +-
 .../services/assets/ContentTypeAnalyzer.java       |  2 +-
 .../services/assets/ResourceDependencies.java      |  2 +-
 .../services/assets/ResourceTransformer.java       |  2 +-
 .../services/assets/StreamableResource.java        |  2 +-
 .../assets/StreamableResourceProcessing.java       |  2 +-
 .../services/assets/StreamableResourceSource.java  |  2 +-
 .../services/dynamic/DynamicTemplateParser.java    |  2 +-
 .../tapestry5/services/javascript/AMDWrapper.java  |  2 +-
 .../javascript/JavaScriptModuleConfiguration.java  |  4 +-
 .../services/javascript/JavaScriptStackSource.java |  4 +-
 .../services/javascript/ModuleManager.java         |  2 +-
 .../services/messages/ComponentMessagesSource.java |  6 +-
 .../services/messages/PropertiesFileParser.java    |  6 +-
 .../pageload/ComponentResourceLocator.java         |  2 +-
 .../pageload/ComponentResourceSelector.java        |  4 +-
 .../templates/ComponentTemplateLocator.java        |  2 +-
 .../services/transform/InjectionProvider2.java     |  2 +-
 .../apache/tapestry5/test/TapestryTestCase.java    |  4 +-
 .../tapestry5/tree/DefaultTreeExpansionModel.java  |  2 +-
 .../apache/tapestry5/tree/DefaultTreeModel.java    |  2 +-
 .../tapestry5/tree/DefaultTreeSelectionModel.java  |  2 +-
 .../org/apache/tapestry5/util/EnumSelectModel.java |  4 +-
 .../apache/tapestry5/util/EnumValueEncoder.java    |  2 +-
 .../apache/tapestry5/util/PublicUtilMessages.java  |  4 +-
 .../tapestry5/validator/CheckboxValidator.java     |  2 +-
 .../org/apache/tapestry5/validator/Checked.java    |  2 +-
 .../java/org/apache/tapestry5/validator/Email.java |  2 +-
 .../java/org/apache/tapestry5/validator/Max.java   |  2 +-
 .../org/apache/tapestry5/validator/MaxLength.java  |  2 +-
 .../java/org/apache/tapestry5/validator/Min.java   |  2 +-
 .../org/apache/tapestry5/validator/MinLength.java  |  2 +-
 .../java/org/apache/tapestry5/validator/None.java  |  2 +-
 .../org/apache/tapestry5/validator/Regexp.java     |  2 +-
 .../org/apache/tapestry5/validator/Required.java   |  2 +-
 .../app1/pages/DateFieldValidationDemo.groovy      |  1 -
 .../integration/app1/pages/ZoneFormDemo.groovy     |  2 +-
 .../integration/app5/pages/Error404.groovy         |  4 +-
 .../integration/app5/services/AppModule.groovy     |  4 +-
 .../appfolder/services/AppModule.groovy            |  2 +-
 .../integration/locallib/alpha/pages/Logo.groovy   |  1 -
 .../symbolparam/services/AppModule.groovy          |  2 +-
 .../services/ComponentClassResolverImplTest.groovy |  8 +--
 .../ResponseCompressionAnalyzerTest.groovy         |  4 +-
 .../services/assets/CSSURLRewriterTests.groovy     |  2 +-
 .../services/assets/ModuleReaderSpec.groovy        |  8 ---
 .../services/javascript/AMDWrapperTest.groovy      |  2 +-
 .../corelib/base/AbstractPropertyOutputTest.java   |  4 +-
 .../corelib/components/BeanEditorTest.java         |  6 +-
 .../corelib/components/PropertyEditorTest.java     |  6 +-
 .../tapestry5/corelib/components/SelectTest.java   |  6 +-
 .../java/org/apache/tapestry5/dom/DOMTest.java     |  2 +-
 .../activationctx/services/AppModule.java          |  2 +-
 .../activationctx2/services/AppModule.java         |  2 +-
 .../apache/tapestry5/integration/app1/Stuff.java   |  2 +-
 .../app1/base/BaseEventHandlerDemo.java            |  2 +-
 .../base/OverrideEventHandlerDemoBaseClass.java    |  2 +-
 .../integration/app1/components/Count.java         |  2 +-
 .../integration/app1/data/RegistrationData.java    |  2 +-
 .../app1/mixins/TextOnlyOnDisabled.java            |  2 +-
 .../app1/pages/AddedGridColumnsDemo.java           |  2 +-
 .../integration/app1/pages/AjaxRadioDemo.java      |  2 +-
 .../integration/app1/pages/AutocompleteDemo.java   |  2 +-
 .../integration/app1/pages/BlockDemo.java          |  2 +-
 .../integration/app1/pages/ChecklistDemo.java      |  2 +-
 .../integration/app1/pages/ClassLoaderInspect.java |  2 +-
 .../app1/pages/DateFieldAjaxFormLoop.java          |  2 +-
 .../integration/app1/pages/DateFieldDemo.java      |  2 +-
 .../integration/app1/pages/EmptyGrid.java          |  2 +-
 .../integration/app1/pages/FormInjectorDemo.java   |  2 +-
 .../integration/app1/pages/GridInLoopDemo.java     |  2 +-
 .../integration/app1/pages/GridSetDemo.java        |  2 +-
 .../integration/app1/pages/Html5DateFieldDemo.java |  2 +-
 .../tapestry5/integration/app1/pages/Index.java    |  2 +-
 .../integration/app1/pages/Localization.java       |  2 +-
 .../pages/OverrideDateFieldMessageCatalogDemo.java |  2 +-
 .../integration/app1/pages/PaletteDemo.java        |  2 +-
 .../integration/app1/pages/RadioDemo.java          |  2 +-
 .../integration/app1/pages/SelectZoneDemo.java     |  4 +-
 .../app1/pages/SimpleTrackGridDemo.java            |  2 +-
 .../integration/app1/pages/TreeSelectionDemo.java  |  4 +-
 .../integration/app1/services/AppModule.java       | 10 +--
 .../app1/services/EnableJQueryModule.java          |  2 +-
 .../app1/services/MessageAccessImpl.java           |  2 +-
 .../app1/services/MusicLibraryParser.java          |  4 +-
 .../app1/services/ToDoDatabaseImpl.java            |  5 +-
 .../integration/app2/services/LocaleAppModule.java |  2 +-
 .../integration/app3/services/AppModule.java       |  6 +-
 .../integration/cluster/services/AppModule.java    |  2 +-
 .../services/AppComponentEventLinkTransformer.java |  2 +-
 .../integration/linktrans/services/AppModule.java  |  4 +-
 .../services/AppPageRenderLinkTransformer.java     |  2 +-
 .../tapestry5/integration/pagelevel/FormTest.java  |  2 +-
 .../integration/pagelevel/SubmitTest.java          |  2 +-
 .../integration/reload/services/AppModule.java     |  2 +-
 .../internal/PropertyOverridesImplTest.java        |  2 +-
 .../internal/TapestryInternalUtilsTest.java        |  8 +--
 .../MessagesAnnotationConstraintGeneratorTest.java |  2 +-
 .../internal/bindings/BindingFactoryTest.java      |  6 +-
 .../internal/bindings/PropBindingFactoryTest.java  |  6 +-
 .../bindings/ValidateBindingFactoryTest.java       |  8 +--
 .../grid/CollectionGridDataSourceTest.java         |  2 +-
 .../model/MutableComponentModelImplTest.java       |  4 +-
 .../services/AbstractBeanModelSourceImplTest.java  |  4 +-
 .../services/AddTransformPagesToCISModule.java     |  4 +-
 .../services/AnnotationDataTypeAnalyzerTest.java   |  5 +-
 .../services/ApplicationStateManagerImplTest.java  |  2 +-
 ...tionStatePersistenceStrategySourceImplTest.java |  3 +-
 .../internal/services/AssetObjectProviderTest.java |  8 +--
 .../internal/services/AssetSourceImplTest.java     |  2 +-
 .../internal/services/BeanBlockSourceImplTest.java |  6 +-
 .../internal/services/BindingSourceImplTest.java   | 10 +--
 .../ClasspathAssetAliasManagerImplTest.java        |  6 +-
 .../ClientPersistentFieldStorageImplTest.java      |  4 +-
 .../services/ComponentDefaultProviderImplTest.java |  8 +--
 .../ComponentEventLinkEncoderImplTest.java         |  2 +-
 .../services/ComponentMessagesSourceImplTest.java  |  4 +-
 .../services/ComponentTemplateSourceImplTest.java  |  4 +-
 .../internal/services/ContextImplTest.java         |  2 +-
 .../internal/services/ContextResourceTest.java     |  2 +-
 .../internal/services/CookiesImplTest.java         |  2 +-
 .../DefaultRequestExceptionHandlerTest.java        |  2 +-
 .../internal/services/EnvironmentImplTest.java     |  4 +-
 .../EnvironmentalShadowBuilderImplTest.java        |  2 +-
 .../internal/services/EventContextTests.java       |  2 +-
 .../services/FieldTranslatorSourceImplTest.java    |  6 +-
 .../services/FieldValidationSupportImplTest.java   |  4 +-
 .../FieldValidatorDefaultSourceImplTest.java       |  4 +-
 .../internal/services/FieldValidatorImplTest.java  |  2 +-
 .../services/FieldValidatorSourceImplTest.java     |  8 +--
 .../services/ForceDevelopmentModeModule.java       |  2 +-
 .../internal/services/IgnoredPathsFilterTest.java  |  2 +-
 .../internal/services/LinkSourceImplTest.java      |  4 +-
 .../services/LocalizationSetterImplTest.java       |  2 +-
 .../internal/services/MetaDataLocatorImplTest.java |  8 +--
 .../services/NullFieldStrategySourceImplTest.java  |  4 +-
 .../PageActivationContextCollectorImplTest.java    |  2 +-
 .../services/PageElementFactoryImplTest.java       |  6 +-
 .../services/PersistentFieldManagerImplTest.java   |  8 +--
 .../services/PropertyConduitSourceImplTest.java    |  4 +-
 .../ServiceAnnotationObjectProviderTest.java       |  6 +-
 .../internal/services/TemplateParserImplTest.java  | 10 +--
 .../TranslatorAlternatesSourceImplTest.java        |  2 +-
 .../services/TranslatorSourceImplTest.java         |  4 +-
 .../internal/services/XMLTokenStreamTests.java     |  4 +-
 .../messages/PropertiesFileParserImplTest.java     |  2 +-
 .../internal/structure/BlockImplTest.java          |  4 +-
 .../structure/ExpansionPageElementImplTest.java    |  2 +-
 .../InternalComponentResourcesImplTest.java        |  2 +-
 .../internal/test/InternalBaseTestCase.java        | 12 ++--
 .../tapestry5/internal/util/IntegerRangeTest.java  |  1 +
 .../tapestry5/internal/util/MultiKeyTest.java      |  1 +
 .../apache/tapestry5/root/PageCallbackTest.java    |  2 +-
 .../apache/tapestry5/util/EnumSelectModelTest.java |  2 +-
 .../tapestry5/util/EnumValueEncoderTest.java       | 12 ++--
 .../org/apache/tapestry5/validator/EmailTest.java  |  2 +-
 .../apache/tapestry5/validator/MaxLengthTest.java  |  2 +-
 .../org/apache/tapestry5/validator/MaxTest.java    |  2 +-
 .../apache/tapestry5/validator/MinLengthTest.java  |  2 +-
 .../org/apache/tapestry5/validator/MinTest.java    |  2 +-
 .../org/apache/tapestry5/validator/RegexpTest.java |  2 +-
 .../apache/tapestry5/validator/RequiredTest.java   |  2 +-
 .../hibernate/modules/HibernateCoreModule.java     |  4 +-
 .../hibernate/HibernateSessionSourceImplTest.java  |  2 +-
 .../hibernate/modules/HibernateModule.java         | 10 +--
 .../hibernate/HibernateEntityValueEncoder.java     |  8 +--
 .../hibernate/HibernateEntityValueEncoderTest.java |  4 +-
 .../java/org/example/app0/services/AppModule.java  |  4 +-
 .../t5internal/modules/InternalTestModule.java     |  2 +-
 .../tapestry5/jcache/internal/CacheLookupUtil.java |  2 +-
 .../tapestry5/jcache/module/JCacheModule.java      |  2 +-
 .../apache/tapestry5/ioc/junit/MapModuleDef.java   |  2 +-
 .../org/apache/tapestry5/ioc/AnnotationAccess.java |  2 +
 .../org/apache/tapestry5/ioc/BaseLocatable.java    |  5 +-
 .../java/org/apache/tapestry5/ioc/IOCSymbols.java  |  2 +-
 .../org/apache/tapestry5/ioc/IOCUtilities.java     |  4 +-
 .../org/apache/tapestry5/ioc/OrderConstraint.java  |  2 +
 .../tapestry5/ioc/OrderConstraintBuilder.java      |  2 +
 .../java/org/apache/tapestry5/ioc/Registry.java    |  1 +
 .../org/apache/tapestry5/ioc/RegistryBuilder.java  | 13 ++--
 .../java/org/apache/tapestry5/ioc/ReloadAware.java |  1 +
 .../org/apache/tapestry5/ioc/ServiceLifecycle.java |  2 +
 .../org/apache/tapestry5/ioc/ServiceResources.java |  3 +-
 .../apache/tapestry5/ioc/annotations/Marker.java   |  2 +-
 .../apache/tapestry5/ioc/def/ContributionDef.java  |  4 +-
 .../org/apache/tapestry5/ioc/def/ServiceDef.java   |  2 +-
 .../org/apache/tapestry5/ioc/def/StartupDef.java   |  2 +-
 .../ioc/internal/AbstractConfigurationImpl.java    |  2 +-
 .../AbstractMethodInvokingInstrumenter.java        |  9 ++-
 .../internal/AbstractReloadableObjectCreator.java  |  8 +--
 .../ioc/internal/AbstractServiceCreator.java       |  8 ++-
 .../ioc/internal/AbstractServiceInstrumenter.java  |  4 +-
 .../tapestry5/ioc/internal/AdvisorDefImpl.java     |  2 +-
 .../ioc/internal/AdvisorStackBuilder.java          |  2 +-
 .../ioc/internal/AnnotationAccessImpl.java         |  2 +-
 .../ioc/internal/ConstructorServiceCreator.java    |  2 +-
 .../ioc/internal/ContributionDefImpl.java          | 14 +++-
 .../tapestry5/ioc/internal/DecoratorDefImpl.java   |  2 +-
 .../ioc/internal/DefaultModuleDefImpl.java         | 11 ++-
 .../apache/tapestry5/ioc/internal/IOCMessages.java |  6 +-
 .../ioc/internal/InterceptorStackBuilder.java      |  2 +-
 .../tapestry5/ioc/internal/InternalRegistry.java   |  9 ++-
 .../internal/LifecycleWrappedServiceCreator.java   |  2 +-
 .../apache/tapestry5/ioc/internal/ModuleImpl.java  | 20 ++++--
 .../ioc/internal/ObjectCreatorSource.java          |  2 +-
 .../tapestry5/ioc/internal/ObjectLocatorImpl.java  |  6 +-
 .../tapestry5/ioc/internal/OperationException.java |  2 +-
 .../ioc/internal/OperationTrackerImpl.java         |  6 +-
 .../internal/OperationTrackingObjectCreator.java   |  2 +-
 .../ioc/internal/OrderedConfigurationOverride.java |  2 +-
 .../RecursiveServiceCreationCheckWrapper.java      |  4 +-
 .../tapestry5/ioc/internal/RegistryImpl.java       | 45 ++++++++++--
 .../tapestry5/ioc/internal/RegistryWrapper.java    |  4 +-
 .../ioc/internal/ReloadableObjectCreator.java      |  4 +-
 .../internal/ReloadableObjectCreatorSource.java    |  4 +-
 ...loadableServiceImplementationObjectCreator.java |  4 +-
 .../ioc/internal/ServiceActivityTrackerImpl.java   |  3 +-
 .../tapestry5/ioc/internal/ServiceAdvisorImpl.java |  4 +-
 .../tapestry5/ioc/internal/ServiceBinderImpl.java  | 11 ++-
 .../ioc/internal/ServiceBuilderMethodInvoker.java  |  4 +-
 .../ioc/internal/ServiceDecoratorImpl.java         |  4 +-
 .../tapestry5/ioc/internal/ServiceDefImpl.java     |  6 +-
 .../ioc/internal/ServiceResourcesImpl.java         |  6 +-
 .../ioc/internal/SingletonServiceLifecycle.java    |  4 +-
 .../tapestry5/ioc/internal/StartupDefImpl.java     |  6 +-
 .../tapestry5/ioc/internal/TypeCoercerProxy.java   |  2 +-
 .../ioc/internal/TypeCoercerProxyImpl.java         |  4 +-
 .../internal/ValidatingConfigurationWrapper.java   |  6 +-
 .../ValidatingMappedConfigurationWrapper.java      |  6 +-
 .../ValidatingOrderedConfigurationWrapper.java     |  8 +--
 .../services/AbtractAspectInterceptorBuilder.java  |  2 +-
 .../ioc/internal/services/AspectDecoratorImpl.java |  2 +-
 .../services/AspectInterceptorBuilderImpl.java     |  4 +-
 .../internal/services/AutobuildObjectProvider.java |  8 +--
 .../ioc/internal/services/BridgeBuilder.java       |  4 +-
 .../internal/services/CachingObjectCreator.java    |  8 +--
 .../ioc/internal/services/ChainBuilderImpl.java    |  2 +-
 .../services/ClasspathResourceSymbolProvider.java  |  2 +-
 .../internal/services/ClasspathScannerImpl.java    |  4 +-
 .../services/DefaultImplementationBuilderImpl.java |  4 +-
 .../internal/services/ExceptionAnalyzerImpl.java   |  9 ++-
 .../internal/services/ExceptionTrackerImpl.java    |  2 +-
 .../internal/services/JustInTimeObjectCreator.java |  3 +-
 .../ioc/internal/services/LazyAdvisorImpl.java     |  2 +-
 .../services/MasterObjectProviderImpl.java         |  6 +-
 .../ioc/internal/services/MethodIterator.java      |  6 +-
 .../internal/services/ParallelExecutorImpl.java    |  2 +-
 .../services/PerThreadServiceLifecycle.java        |  4 +-
 .../internal/services/PerthreadManagerImpl.java    |  4 +-
 .../ioc/internal/services/PipelineBuilderImpl.java |  2 +-
 .../services/PropertyShadowBuilderImpl.java        |  5 +-
 .../internal/services/RegistryShutdownHubImpl.java |  5 +-
 .../ioc/internal/services/RegistryStartup.java     |  2 +-
 .../internal/services/ResourceSymbolProvider.java  |  6 +-
 .../ioc/internal/services/ServiceOverrideImpl.java |  6 +-
 .../internal/services/StaticObjectProvider.java    |  6 +-
 .../ioc/internal/services/StrategyBuilderImpl.java |  4 +-
 .../internal/services/SymbolObjectProvider.java    |  8 +--
 .../ioc/internal/services/SymbolSourceImpl.java    |  6 +-
 .../internal/services/SystemEnvSymbolProvider.java |  2 +-
 .../ioc/internal/services/ThunkCreatorImpl.java    |  6 +-
 .../internal/services/UpdateListenerHubImpl.java   |  2 +-
 .../ioc/internal/services/ValueObjectProvider.java |  8 +--
 .../services/cron/PeriodicExecutorImpl.java        |  2 +-
 .../ioc/internal/util/AbstractResource.java        |  4 +-
 .../ioc/internal/util/ClasspathResource.java       |  4 +-
 .../ioc/internal/util/ConstructionPlan.java        |  3 +-
 .../ioc/internal/util/ConstructorInvoker.java      |  4 +-
 .../ioc/internal/util/DependencyNode.java          |  4 +-
 .../ioc/internal/util/IdToDependencyNode.java      |  4 +-
 .../tapestry5/ioc/internal/util/InternalUtils.java | 22 ++++--
 .../tapestry5/ioc/internal/util/LocationImpl.java  |  8 +--
 .../tapestry5/ioc/internal/util/MethodInvoker.java |  4 +-
 .../tapestry5/ioc/internal/util/OneShotLock.java   |  2 +
 .../tapestry5/ioc/internal/util/Orderer.java       |  6 +-
 .../ioc/internal/util/URLChangeTracker.java        |  1 +
 .../tapestry5/ioc/internal/util/UtilMessages.java  |  3 +-
 .../tapestry5/ioc/modules/TapestryIOCModule.java   | 81 +++++++++++++++++++---
 .../ioc/services/MasterObjectProvider.java         |  8 +--
 .../tapestry5/ioc/services/PerthreadManager.java   |  2 +-
 .../tapestry5/ioc/services/ServiceOverride.java    |  2 +-
 .../tapestry5/ioc/services/StrategyBuilder.java    |  4 +-
 .../tapestry5/ioc/services/ThunkCreator.java       |  4 +-
 .../org/apache/tapestry5/ioc/test/IOCTestCase.java | 17 ++++-
 .../org/apache/tapestry5/ioc/util/IdAllocator.java |  2 +-
 .../tapestry5/services/UpdateListenerHub.java      |  6 +-
 .../test/groovy/ioc/specs/BaseLocatableSpec.groovy |  5 +-
 .../test/groovy/ioc/specs/BridgeBuilderSpec.groovy |  5 +-
 .../groovy/ioc/specs/CaseInsensitiveMapSpec.groovy |  3 +-
 .../ioc/specs/ContributionDefImplSpec.groovy       |  2 +-
 .../ioc/specs/DefaultModuleDefImplSpec.groovy      | 14 ++--
 .../ioc/specs/ExceptionAnalyzerImplSpec.groovy     |  4 +-
 .../groovy/ioc/specs/ExceptionUtilsSpec.groovy     |  5 +-
 .../groovy/ioc/specs/GeneralIntegrationSpec.groovy |  4 +-
 .../test/groovy/ioc/specs/GenericUtilsSpec.groovy  |  3 +-
 .../groovy/ioc/specs/InheritanceSearchSpec.groovy  |  4 +-
 .../test/groovy/ioc/specs/InternalUtilsSpec.groovy | 16 +++--
 .../ioc/specs/JustInTimeObjectCreatorSpec.groovy   |  2 +-
 .../ioc/specs/MasterObjectProviderImplSpec.groovy  |  7 +-
 .../ioc/specs/MessageFormatterImplSpec.groovy      |  3 +-
 .../test/groovy/ioc/specs/MessagesImplSpec.groovy  |  5 +-
 .../test/groovy/ioc/specs/ModuleImplSpec.groovy    |  7 +-
 .../groovy/ioc/specs/OperationAdvisorSpec.groovy   |  3 +-
 .../groovy/ioc/specs/OperationTrackerSpec.groovy   | 10 ---
 .../groovy/ioc/specs/PropertyAccessImplSpec.groovy |  7 +-
 ...RecursiveServiceCreationCheckWrapperSpec.groovy |  2 +-
 .../ioc/specs/ResourceSymbolProviderSpec.groovy    |  3 +-
 .../ioc/specs/ServiceActivityScoreboardSpec.groovy |  1 -
 .../specs/ServiceBuilderMethodInvokerSpec.groovy   |  4 +-
 .../test/groovy/ioc/specs/ServiceLookupSpec.groovy |  6 +-
 .../ioc/specs/SingletonServiceLifecycleSpec.groovy |  3 +-
 .../src/test/groovy/ioc/specs/StackSpec.groovy     |  1 -
 .../groovy/ioc/specs/StrategyRegistrySpec.groovy   |  5 +-
 .../ioc/specs/StringToEnumCoercionSpec.groovy      |  3 +-
 .../test/groovy/ioc/specs/TimeIntervalSpec.groovy  |  3 +-
 .../test/groovy/ioc/specs/TypeCoercerSpec.groovy   |  4 +-
 .../ValidatingConfigurationWrapperSpec.groovy      |  5 +-
 ...ValidatingMappedConfigurationWrapperSpec.groovy | 10 +--
 ...alidatingOrderedConfigurationWrapperSpec.groovy |  5 +-
 .../ioc/specs/ValueObjectProviderSpec.groovy       |  9 +--
 .../test/java/com/example/ExtraRunnableModule.java |  2 +-
 .../tapestry5/ioc/AutobuildInjectionModule.java    |  1 +
 .../org/apache/tapestry5/ioc/BarneyModule.java     |  4 +-
 .../ioc/CaseInsensitiveContributeMethodModule.java |  2 +
 .../ioc/CatchAllServiceConfigurationListener.java  |  2 +-
 .../tapestry5/ioc/ConfigurationOverrideModule.java |  3 +
 .../tapestry5/ioc/ContributeByClassModule.java     |  3 +
 .../ioc/ContributedValueCoercionModule.java        |  1 +
 .../tapestry5/ioc/ContributionOrderModule.java     |  1 +
 .../tapestry5/ioc/ContributionOrderModule2.java    |  2 +
 .../tapestry5/ioc/ContributionOrderModule3.java    |  2 +
 .../tapestry5/ioc/ContributionOrderModule4.java    |  2 +
 .../org/apache/tapestry5/ioc/CyclicMOPModule.java  |  4 +-
 .../ioc/DuplicateConfigurationOverrideModule.java  |  3 +
 .../ioc/FailedConfigurationOverrideModule.java     |  2 +
 .../ioc/FieldResourceInjectionModule.java          |  2 +
 .../tapestry5/ioc/FieldResourceServiceImpl.java    |  2 +-
 .../java/org/apache/tapestry5/ioc/FredModule.java  |  5 +-
 .../org/apache/tapestry5/ioc/GreeterModule.java    |  1 +
 .../ioc/GreeterServiceOverrideModule.java          |  2 +
 .../apache/tapestry5/ioc/InjectionCheckModule.java |  1 +
 .../tapestry5/ioc/InvalidContributeDefModule.java  |  2 +
 .../tapestry5/ioc/InvalidContributeDefModule2.java |  1 +
 .../tapestry5/ioc/InvalidContributeDefModule3.java |  1 +
 .../tapestry5/ioc/OptionalContributionModule.java  |  1 +
 .../org/apache/tapestry5/ioc/StaticModule.java     |  5 +-
 .../tapestry5/ioc/internal/AdviceModule.java       |  2 +-
 .../tapestry5/ioc/internal/AlphabetModule.java     |  2 +-
 .../tapestry5/ioc/internal/AlphabetModule2.java    |  2 +-
 .../internal/ExtraPublicConstructorsModule.java    |  2 +-
 .../ioc/internal/MappedConfigurationModule.java    |  2 +-
 .../ioc/internal/OrderedConfigurationModule.java   |  2 +-
 .../tapestry5/ioc/internal/ReadManifest.java       |  4 +-
 .../tapestry5/ioc/internal/SimpleModule.java       |  2 +-
 .../TooManyContributionParametersModule.java       |  4 +-
 .../ioc/internal/services/NonParallelModule.java   |  2 +-
 .../services/ServiceDecoratorImplSpec.groovy       |  5 +-
 .../services/ServiceProxySerializationSpec.groovy  |  3 +-
 .../ioc/internal/services/StartupModule.java       |  2 +-
 .../ioc/internal/services/StartupModule2.java      |  2 +-
 .../internal/services/StringLocationSpec.groovy    |  4 +-
 .../services/SymbolObjectProviderSpec.groovy       |  9 +--
 ...nmatchingMappedConfigurationOverrideModule.java |  2 +-
 .../apache/tapestry5/javadoc/ClassDescription.java |  2 +-
 .../tapestry5/javadoc/ParameterDescription.java    |  2 +-
 .../tapestry5/javadoc/TapestryDocTaglet.java       |  2 +-
 .../org/apache/tapestry5/javadoc/XDocStreamer.java |  4 +-
 .../tapestry5/internal/jmx/MBeanSupportImpl.java   |  2 +-
 .../org/example/testapp/services/AppModule.java    |  2 +-
 .../internal/jpa/EntityManagerManagerImpl.java     |  2 +-
 .../internal/jpa/EntityManagerObjectProvider.java  | 10 +--
 .../internal/jpa/EntityManagerSourceImpl.java      |  4 +-
 .../tapestry5/internal/jpa/JpaValueEncoder.java    |  8 +--
 .../internal/jpa/PersistenceContentHandler.java    |  2 +-
 .../internal/jpa/PersistenceUnitInfoImpl.java      |  2 +-
 ...apestryCDIBeanManagerForJPAEntityListeners.java |  2 +-
 .../apache/tapestry5/jpa/modules/JpaModule.java    | 12 ++--
 .../internal/jpa/EntityManagerSourceImplTest.java  |  2 +-
 .../jpa/JpaTransactionAdvisorImplTest.java         |  2 +-
 .../apache/tapestry5/jpa/test/JpaTestModule.java   |  6 +-
 .../java/org/example/app1/services/AppModule.java  |  2 +-
 .../java/org/example/app2/services/AppModule.java  |  2 +-
 .../java/org/example/app3/services/AppModule.java  |  2 +-
 .../java/org/example/app4/services/AppModule.java  |  2 +-
 .../java/org/example/app5/services/AppModule.java  |  2 +-
 .../java/org/example/app6/services/AppModule.java  |  2 +-
 .../tapestry5/internal/json/StringToJSONArray.java |  2 +-
 .../internal/json/StringToJSONObject.java          |  2 +-
 .../apache/tapestry5/json/modules/JSONModule.java  |  6 +-
 .../tapestry5/json/modules/package-info.java       |  2 +-
 .../tapestry5/kaptcha/components/KaptchaField.java |  2 +-
 .../internal/services/KaptchaDataTypeAnalyzer.java |  4 +-
 .../tapestry5/kaptcha/modules/KaptchaModule.java   |  5 +-
 .../test/java/kaptcha/demo/services/AppModule.java |  2 +-
 .../tapestry5/mongodb/modules/MongodbModule.java   | 11 +--
 .../src/test/groovy/MongoDBSpec.groovy             | 13 ++--
 .../internal/mongodb/MongoDBTestModule.java        |  5 +-
 .../internal/spring/SpringBeanServiceDef.java      |  2 +-
 .../tapestry5/internal/spring/SpringModuleDef.java | 10 ++-
 .../internal/spring/StaticObjectCreator.java       |  4 +-
 .../internal/spring/TapestryBeanFactory.java       |  4 +-
 .../tapestry5/spring/modules/SpringModule.java     |  4 +-
 .../internal/spring/SpringModuleDefTest.java       |  2 +-
 .../org/example/testapp/services/AppModule.java    |  4 +-
 .../org/example/testapp1/services/AppModule.java   |  2 +-
 .../internal/services/MultipartDecoderImpl.java    |  2 +-
 .../upload/internal/services/ParameterValue.java   |  2 +-
 .../services/ParametersServletRequestWrapper.java  |  5 +-
 .../upload/internal/services/UploadMessages.java   |  4 +-
 .../tapestry5/upload/modules/UploadModule.java     |  6 +-
 .../org/example/upload/services/AppModule.java     |  2 +-
 .../webresources/CoffeeScriptCompiler.java         |  4 +-
 .../webresources/ContentChangeTracker.java         |  4 +-
 .../webresources/GoogleClosureMinimizer.java       |  2 +-
 .../webresources/LessResourceTransformer.java      |  6 +-
 .../webresources/ResourceDependenciesSplitter.java |  2 +-
 .../internal/webresources/ResourceLessSource.java  |  2 +-
 .../webresources/ResourceTransformUtils.java       |  4 +-
 .../ResourceTransformerFactoryImpl.java            |  4 +-
 .../internal/webresources/RhinoExecutorPool.java   |  4 +-
 .../internal/webresources/TypeScriptCompiler.java  |  2 +-
 .../webresources/modules/WebResourcesModule.java   |  6 +-
 .../tests/TypeScriptCompilerSpec.groovy            |  2 +-
 .../java/t5/webresources/components/Layout.java    | 23 ------
 .../src/test/java/t5/webresources/pages/Index.java |  8 ---
 .../test/java/t5/webresources/pages/MultiLess.java |  8 ---
 .../java/t5/webresources/services/AppModule.java   |  4 +-
 828 files changed, 1885 insertions(+), 1611 deletions(-)

diff --git a/.gitignore b/.gitignore
index b486090..b42c2b7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,7 @@ bin/
 *.ipr
 *.iml
 *.iws
+.metadata
 target
 test-output
 temp-testng*.xml
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
index fdb60ac..c441df0 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModel.java
@@ -38,7 +38,7 @@ public interface BeanModel<T>
 
 
     /**
-     * Creates a new bean instance.  This is based on {@link org.apache.tapestry5.ioc.ObjectLocator#autobuild(Class)},
+     * Creates a new bean instance.  This is based on {@link org.apache.tapestry5.commons.ObjectLocator#autobuild(Class)},
      * so a public constructor will be used, and dependencies injected.
      *
      * @return new instance of the bean
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
index 031e236..040439b 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelSourceBuilder.java
@@ -17,20 +17,20 @@ import org.apache.tapestry5.beanmodel.internal.services.PropertyConduitSourceImp
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
 import org.apache.tapestry5.beanmodel.services.PlasticProxyFactoryImpl;
 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;
-import org.apache.tapestry5.ioc.Configuration;
-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.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.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.internal.BasicDataTypeAnalyzers;
+import org.apache.tapestry5.commons.internal.BasicTypeCoercions;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.internal.services.TypeCoercerImpl;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.services.CoercionTuple;
+import org.apache.tapestry5.commons.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.slf4j.LoggerFactory;
 
 import java.lang.annotation.Annotation;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
index 41d8866..bf46eb9 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/BeanModelUtils.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
 
 /**
  * Utilities used in a few places to modify an existing {@link BeanModel}.
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
index c8be9ef..af67c5f 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyConduit.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 
 /**
  * Used to read or update the value associated with a property. A PropertyConduit provides access to the annotations on
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
index 51d9ae3..35aa758 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/PropertyModel.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5.beanmodel;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 
 /**
  * Part of a {@link org.apache.tapestry5.beanmodel.BeanModel} that defines the attributes of a single property of a
@@ -20,7 +20,7 @@ import org.apache.tapestry5.ioc.AnnotationProvider;
  *
  *
  * 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)}
+ * non-null.  When there is no property conduit, then {@link org.apache.tapestry5.commons.AnnotationProvider#getAnnotation(Class)}
  * will return null.
  */
 public interface PropertyModel extends AnnotationProvider
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
index bf51280..cab472e 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/BeanModelImpl.java
@@ -20,13 +20,13 @@ 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;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
-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.commons.Messages;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.plastic.PlasticUtils;
 
 import java.util.List;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
index 6707d4c..16f34ab 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/beanmodel/PropertyModelImpl.java
@@ -20,9 +20,8 @@ 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;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
 import org.apache.tapestry5.plastic.PlasticUtils;
 
 @SuppressWarnings("all")
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
index befb8ff..3499708 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/BeanModelSourceImpl.java
@@ -21,14 +21,13 @@ 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.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.services.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.ComponentLayer;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
 
 import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
index c2005f1..ff886c4 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/ClassPropertyAdapterImpl.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.beanmodel.internal.services;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newCaseInsensitiveMap;
 
 import java.beans.PropertyDescriptor;
 import java.lang.annotation.Annotation;
@@ -23,12 +23,12 @@ 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;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
+import org.apache.tapestry5.commons.internal.services.ServiceMessages;
+import org.apache.tapestry5.commons.internal.util.GenericsUtils;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.services.ClassPropertyAdapter;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 public class ClassPropertyAdapterImpl implements ClassPropertyAdapter
 {
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
index 7b371a4..a5b9df8 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/CoercingPropertyConduitWrapper.java
@@ -19,7 +19,7 @@ import java.lang.reflect.Type;
 
 import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.beanmodel.PropertyConduit2;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 
 public class CoercingPropertyConduitWrapper implements PropertyConduit2
 {
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
index eca1ced..da44de8 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/LiteralPropertyConduit.java
@@ -18,8 +18,8 @@ import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
 
 import org.apache.tapestry5.beanmodel.internal.InternalPropertyConduit;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 
 /**
  * A PropertyConduit for a literal value in an expression, such as a number, or "true", "false" or "null".
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
index a2838c6..88eac22 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAccessImpl.java
@@ -26,9 +26,9 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
+import org.apache.tapestry5.commons.services.ClassPropertyAdapter;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 @SuppressWarnings("unchecked")
 public class PropertyAccessImpl implements PropertyAccess
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
index 9ee932a..171ffc1 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyAdapterImpl.java
@@ -14,19 +14,19 @@
 
 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;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-
 import java.lang.annotation.Annotation;
 import java.lang.reflect.*;
 import java.util.List;
 
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.internal.services.AccessableObjectAnnotationProvider;
+import org.apache.tapestry5.commons.internal.services.AnnotationProviderChain;
+import org.apache.tapestry5.commons.internal.services.ServiceMessages;
+import org.apache.tapestry5.commons.services.ClassPropertyAdapter;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
+
 public class PropertyAdapterImpl implements PropertyAdapter
 {
     private final ClassPropertyAdapter classAdapter;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
index 780cd59..bfbdbae 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitDelegate.java
@@ -17,9 +17,9 @@ package org.apache.tapestry5.beanmodel.internal.services;
 import java.lang.annotation.Annotation;
 
 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;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.IntegerRange;
 
 /**
  * Companion class for {@link org.apache.tapestry5.beanmodel.PropertyConduit} instances created by the
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
index 0379022..9d85524 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/internal/services/PropertyConduitSourceImpl.java
@@ -21,25 +21,24 @@ 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.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.internal.NullAnnotationProvider;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.util.GenericsUtils;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.services.*;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
+import org.apache.tapestry5.commons.util.IntegerRange;
+import org.apache.tapestry5.commons.util.MultiKey;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.beanmodel.internal.antlr.PropertyExpressionLexer;
 import org.apache.tapestry5.beanmodel.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;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.NullAnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.GenericsUtils;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.plastic.*;
 import org.apache.tapestry5.services.ComponentClasses;
 import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.InvalidationEventHub;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
index 1df5bb4..6399c1f 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/BeanModelSource.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.beanmodel.services;
 
 import org.apache.tapestry5.beanmodel.BeanModel;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 
 /**
  * Used by a component to create a default {@link org.apache.tapestry5.beanmodel.BeanModel} for a particular bean
@@ -43,8 +43,8 @@ public interface BeanModelSource
      *                                 org.apache.tapestry5.corelib.components.BeanDisplay}).
      * @param messages                 Used to find explicit overrides of
      * @return a model
-     * @deprecated use {@link #createDisplayModel(Class, org.apache.tapestry5.ioc.Messages)} or {@link
-     *             #createEditModel(Class, org.apache.tapestry5.ioc.Messages)}
+     * @deprecated use {@link #createDisplayModel(Class, org.apache.tapestry5.commons.Messages)} or {@link
+     *             #createEditModel(Class, org.apache.tapestry5.commons.Messages)}
      */
     <T> BeanModel<T> create(Class<T> beanClass, boolean filterReadOnlyProperties, Messages messages);
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PlasticProxyFactoryImpl.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PlasticProxyFactoryImpl.java
index 0e95f9e..a1edb84 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PlasticProxyFactoryImpl.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PlasticProxyFactoryImpl.java
@@ -15,15 +15,15 @@
 package org.apache.tapestry5.beanmodel.services;
 
 import org.apache.tapestry5.beanmodel.internal.services.PlasticClassListenerLogger;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.ObjectCreator;
+import org.apache.tapestry5.commons.internal.services.StringLocation;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
 import org.apache.tapestry5.internal.plastic.asm.Type;
 import org.apache.tapestry5.internal.plastic.asm.tree.*;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.services.StringLocation;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
 import org.apache.tapestry5.plastic.*;
 import org.slf4j.Logger;
 
diff --git a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
index 3f10792..8c015cd 100644
--- a/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
+++ b/beanmodel/src/main/java/org/apache/tapestry5/beanmodel/services/PropertyConduitSource.java
@@ -26,7 +26,7 @@ public interface PropertyConduitSource
      * returns, so despite the name, this method does not always create a <em>new</em> conduit. The cache is cleared if
      * a change to component classes is observed.
      *
-     * Callers of this method should observe notifications from the {@link org.apache.tapestry5.services.InvalidationEventHub}
+     * Callers of this method should observe notifications from the {@link org.apache.tapestry5.commons.services.InvalidationEventHub}
      * for {@link org.apache.tapestry5.services.ComponentClasses} and discard any aquired conduits; failure to do so
      * will create memory leaks whenever component classes change (the conduits will keep references to the old classes
      * and classloaders).
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/AnnotationProvider.java b/commons/src/main/java/org/apache/tapestry5/commons/AnnotationProvider.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/AnnotationProvider.java
rename to commons/src/main/java/org/apache/tapestry5/commons/AnnotationProvider.java
index 1f0e744..ed269e5 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/AnnotationProvider.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/AnnotationProvider.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 import java.lang.annotation.Annotation;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/Configuration.java b/commons/src/main/java/org/apache/tapestry5/commons/Configuration.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/Configuration.java
rename to commons/src/main/java/org/apache/tapestry5/commons/Configuration.java
index c489463..22022f2 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/Configuration.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/Configuration.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Object passed into a service contributor method that allows the method provide contributed values to the service's
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/Locatable.java b/commons/src/main/java/org/apache/tapestry5/commons/Locatable.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/Locatable.java
rename to commons/src/main/java/org/apache/tapestry5/commons/Locatable.java
index 37b6551..754f598 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/Locatable.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/Locatable.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Interface implemented by objects which carry a location tag. Defines a readable property, location.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/Location.java b/commons/src/main/java/org/apache/tapestry5/commons/Location.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/ioc/Location.java
rename to commons/src/main/java/org/apache/tapestry5/commons/Location.java
index e6688c2..70706eb 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/Location.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/Location.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * A kind of tag applied to other objects to identify where they came from, in terms of a file (the resource), a line
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/MappedConfiguration.java b/commons/src/main/java/org/apache/tapestry5/commons/MappedConfiguration.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/MappedConfiguration.java
rename to commons/src/main/java/org/apache/tapestry5/commons/MappedConfiguration.java
index 9139bd3..1e5011f 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/MappedConfiguration.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/MappedConfiguration.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Object passed into a service contributor method that allows the method provide contributed values to the service's
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/MessageFormatter.java b/commons/src/main/java/org/apache/tapestry5/commons/MessageFormatter.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/MessageFormatter.java
rename to commons/src/main/java/org/apache/tapestry5/commons/MessageFormatter.java
index e90eb65..dc7a120 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/MessageFormatter.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/MessageFormatter.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Obtained from a {@link org.apache.tapestry5.ioc.Messages}, used to format messages for a specific localized message
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/Messages.java b/commons/src/main/java/org/apache/tapestry5/commons/Messages.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/Messages.java
rename to commons/src/main/java/org/apache/tapestry5/commons/Messages.java
index ba7452c..a18a251 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/Messages.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/Messages.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 import java.util.Set;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/ObjectCreator.java b/commons/src/main/java/org/apache/tapestry5/commons/ObjectCreator.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/ObjectCreator.java
rename to commons/src/main/java/org/apache/tapestry5/commons/ObjectCreator.java
index e7990fc..be18265 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/ObjectCreator.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/ObjectCreator.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Interface used to encapsulate any strategy used defer the creation of some object until just as needed.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/ObjectLocator.java b/commons/src/main/java/org/apache/tapestry5/commons/ObjectLocator.java
similarity index 99%
rename from commons/src/main/java/org/apache/tapestry5/ioc/ObjectLocator.java
rename to commons/src/main/java/org/apache/tapestry5/commons/ObjectLocator.java
index 75bc81f..a435369 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/ObjectLocator.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/ObjectLocator.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 import org.apache.tapestry5.ioc.annotations.Inject;
 
diff --git a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectProvider.java b/commons/src/main/java/org/apache/tapestry5/commons/ObjectProvider.java
similarity index 98%
rename from tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectProvider.java
rename to commons/src/main/java/org/apache/tapestry5/commons/ObjectProvider.java
index 6673e0d..db596fb 100644
--- a/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectProvider.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/ObjectProvider.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Object providers represent an alternate way to locate an object provided somewhere in the {@link
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/OrderedConfiguration.java b/commons/src/main/java/org/apache/tapestry5/commons/OrderedConfiguration.java
similarity index 99%
rename from commons/src/main/java/org/apache/tapestry5/ioc/OrderedConfiguration.java
rename to commons/src/main/java/org/apache/tapestry5/commons/OrderedConfiguration.java
index 4c6958c..eb420e2 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/OrderedConfiguration.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/OrderedConfiguration.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 /**
  * Object passed into a service contributor method that allows the method provide contributed values to the service's
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/Resource.java b/commons/src/main/java/org/apache/tapestry5/commons/Resource.java
similarity index 99%
rename from commons/src/main/java/org/apache/tapestry5/ioc/Resource.java
rename to commons/src/main/java/org/apache/tapestry5/commons/Resource.java
index 08cad2a..a71f120 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/Resource.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/Resource.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc;
+package org.apache.tapestry5.commons;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/BasicDataTypeAnalyzers.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/BasicDataTypeAnalyzers.java
similarity index 90%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/BasicDataTypeAnalyzers.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/BasicDataTypeAnalyzers.java
index 79594a8..c552f80 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/BasicDataTypeAnalyzers.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/BasicDataTypeAnalyzers.java
@@ -11,7 +11,7 @@
 // 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.ioc.internal;
+package org.apache.tapestry5.commons.internal;
 
 import java.util.Calendar;
 import java.util.Date;
@@ -19,12 +19,12 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.tapestry5.beaneditor.DataTypeConstants;
-import org.apache.tapestry5.internal.services.AnnotationDataTypeAnalyzer;
-import org.apache.tapestry5.internal.services.DefaultDataTypeAnalyzer;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
+import org.apache.tapestry5.commons.internal.services.AnnotationDataTypeAnalyzer;
+import org.apache.tapestry5.commons.internal.services.DefaultDataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
 
 /**
  * Class that provides Tapestry's basic default data type analyzers.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/BasicTypeCoercions.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/BasicTypeCoercions.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/BasicTypeCoercions.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/BasicTypeCoercions.java
index b16f470..12e756c 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/BasicTypeCoercions.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/BasicTypeCoercions.java
@@ -11,7 +11,7 @@
 // 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.ioc.internal;
+package org.apache.tapestry5.commons.internal;
 
 import java.io.File;
 import java.lang.reflect.Array;
@@ -22,12 +22,12 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.services.Coercion;
+import org.apache.tapestry5.commons.services.CoercionTuple;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.TimeInterval;
 import org.apache.tapestry5.func.Flow;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.CoercionTuple;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.TimeInterval;
 
 /**
  * Class that provides Tapestry-IoC's basic type coercions.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/NullAnnotationProvider.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/NullAnnotationProvider.java
similarity index 90%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/NullAnnotationProvider.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/NullAnnotationProvider.java
index 716b7c6..ea955ca 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/NullAnnotationProvider.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/NullAnnotationProvider.java
@@ -12,12 +12,12 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
+package org.apache.tapestry5.commons.internal;
 
 import java.lang.annotation.Annotation;
 
+import org.apache.tapestry5.commons.AnnotationProvider;
+
 /**
  * A null implementation of {@link AnnotationProvider}, used when there is not appropriate source of annotations.
  */
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/AccessableObjectAnnotationProvider.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/AccessableObjectAnnotationProvider.java
similarity index 92%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/services/AccessableObjectAnnotationProvider.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/AccessableObjectAnnotationProvider.java
index 2acfd0d..7269dd3 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/AccessableObjectAnnotationProvider.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/AccessableObjectAnnotationProvider.java
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
+package org.apache.tapestry5.commons.internal.services;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.AccessibleObject;
 
+import org.apache.tapestry5.commons.AnnotationProvider;
+
 /**
  * Provides access to annotations of an accessable object such as a {@link java.lang.reflect.Method} or {@link
  * java.lang.reflect.Field}.
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzer.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/AnnotationDataTypeAnalyzer.java
similarity index 84%
rename from commons/src/main/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzer.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/AnnotationDataTypeAnalyzer.java
index 8b20666..17e270a 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzer.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/AnnotationDataTypeAnalyzer.java
@@ -12,11 +12,11 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.commons.internal.services;
 
 import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
 
 /**
  * Checks for the {@link DataType} annotation, returning its value if present.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationProviderChain.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/AnnotationProviderChain.java
similarity index 93%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationProviderChain.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/AnnotationProviderChain.java
index 49b0b15..d106aa2 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationProviderChain.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/AnnotationProviderChain.java
@@ -12,9 +12,9 @@
 // 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.commons.internal.services;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 
 import java.lang.annotation.Annotation;
 import java.util.List;
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/CompoundCoercion.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/CompoundCoercion.java
similarity index 93%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/services/CompoundCoercion.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/CompoundCoercion.java
index 4a5dece..a188438 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/CompoundCoercion.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/CompoundCoercion.java
@@ -12,9 +12,9 @@
 // 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.commons.internal.services;
 
-import org.apache.tapestry5.ioc.services.Coercion;
+import org.apache.tapestry5.commons.services.Coercion;
 
 /**
  * Combines two coercions to create a coercion through an intermediate type.
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/services/DefaultDataTypeAnalyzer.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/DefaultDataTypeAnalyzer.java
similarity index 88%
rename from commons/src/main/java/org/apache/tapestry5/internal/services/DefaultDataTypeAnalyzer.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/DefaultDataTypeAnalyzer.java
index 5447a14..515d70d 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/services/DefaultDataTypeAnalyzer.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/DefaultDataTypeAnalyzer.java
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
+package org.apache.tapestry5.commons.internal.services;
 
 import java.util.Map;
 
+import org.apache.tapestry5.commons.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
+import org.apache.tapestry5.commons.util.StrategyRegistry;
+
 /**
  * The default data type analyzer, which is based entirely on the type of the property (and not on annotations or naming
  * conventions). This is based on a configuration of property type class to string provided as an IoC service
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/services/GenericsResolverImpl.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/GenericsResolverImpl.java
similarity index 99%
rename from commons/src/main/java/org/apache/tapestry5/internal/services/GenericsResolverImpl.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/GenericsResolverImpl.java
index c0abfaf..aa2c780 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/services/GenericsResolverImpl.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/GenericsResolverImpl.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.commons.internal.services;
 
 import java.lang.reflect.Array;
 import java.lang.reflect.Field;
@@ -25,7 +25,7 @@ import java.lang.reflect.TypeVariable;
 import java.lang.reflect.WildcardType;
 import java.util.LinkedList;
 
-import org.apache.tapestry5.services.GenericsResolver;
+import org.apache.tapestry5.commons.services.GenericsResolver;
 
 /**
  * Implementation copied from Tapestry 5.4's GenericUtils (commons package).
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceMessages.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/ServiceMessages.java
similarity index 91%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceMessages.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/ServiceMessages.java
index e92ef2d..5c9445b 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceMessages.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/ServiceMessages.java
@@ -12,11 +12,11 @@
 // 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.commons.internal.services;
 
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.services.Coercion;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.MessagesImpl;
+import org.apache.tapestry5.commons.services.Coercion;
 import org.apache.tapestry5.plastic.PlasticUtils;
 
 public class ServiceMessages
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/services/StringInterner.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringInterner.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/internal/services/StringInterner.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringInterner.java
index 78ee5f4..37a009c 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/services/StringInterner.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringInterner.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.commons.internal.services;
 
 /**
  * Creates "interned" strings that are unique for the same content. This is used for common description strings,
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/services/StringInternerImpl.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringInternerImpl.java
similarity index 88%
rename from commons/src/main/java/org/apache/tapestry5/internal/services/StringInternerImpl.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringInternerImpl.java
index 0df5afa..9d8d541 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/services/StringInternerImpl.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringInternerImpl.java
@@ -12,14 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.services;
+package org.apache.tapestry5.commons.internal.services;
 
+import java.util.Map;
+
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.ComponentClasses;
-import org.apache.tapestry5.services.InvalidationEventHub;
-
-import java.util.Map;
 
 public class StringInternerImpl implements StringInterner
 {
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/StringLocation.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringLocation.java
similarity index 90%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/services/StringLocation.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringLocation.java
index 0769b7e..d2d1d20 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/StringLocation.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/StringLocation.java
@@ -12,10 +12,10 @@
 // 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.commons.internal.services;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
 
 /**
  * Implementation of {@link Location} used when the underlying resource isn't really known.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/TypeCoercerImpl.java
similarity index 95%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/services/TypeCoercerImpl.java
index c93655d..e0d3f1d 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/services/TypeCoercerImpl.java
@@ -10,22 +10,28 @@
 // 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.commons.internal.services;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.WeakHashMap;
+
+import org.apache.tapestry5.commons.internal.util.InheritanceSearch;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.internal.util.LockSupport;
+import org.apache.tapestry5.commons.services.Coercion;
+import org.apache.tapestry5.commons.services.CoercionTuple;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.StringToEnumCoercion;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InheritanceSearch;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
-import org.apache.tapestry5.ioc.internal.util.LockSupport;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.CoercionTuple;
-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.util.StringToEnumCoercion;
-
-import java.util.*;
 
 @SuppressWarnings("all")
 public class TypeCoercerImpl extends LockSupport implements TypeCoercer
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/GenericsUtils.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/GenericsUtils.java
index ea397bf..aa8e9ae 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/GenericsUtils.java
@@ -10,13 +10,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.util;
+package org.apache.tapestry5.commons.internal.util;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.services.GenericsResolver;
+import org.apache.tapestry5.commons.services.GenericsResolver;
 
 /**
  * Static methods related to the use of JDK 1.5 generics. From Tapestry 5.5.0,
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearch.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/InheritanceSearch.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearch.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/InheritanceSearch.java
index 2e57ea6..74cca9d 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearch.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/InheritanceSearch.java
@@ -10,14 +10,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.plastic.PlasticUtils;
+package org.apache.tapestry5.commons.internal.util;
 
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.Set;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.plastic.PlasticUtils;
+
 /**
  * Used to search from a particular class up the inheritance hierarchy of extended classes and implemented interfaces.
  *
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalCommonsUtils.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/InternalCommonsUtils.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalCommonsUtils.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/InternalCommonsUtils.java
index 2a227ad..0e8b60f 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalCommonsUtils.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/InternalCommonsUtils.java
@@ -11,7 +11,7 @@
 // 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.ioc.internal.util;
+package org.apache.tapestry5.commons.internal.util;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
@@ -22,11 +22,12 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.NullAnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Locatable;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.NullAnnotationProvider;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 /**
  * Utility methods class for the Commons package.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/LockSupport.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/LockSupport.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/LockSupport.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/LockSupport.java
index 41de363..ca6c35a 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/LockSupport.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/LockSupport.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.util;
+package org.apache.tapestry5.commons.internal.util;
 
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImpl.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/MessageFormatterImpl.java
similarity index 90%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImpl.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/MessageFormatterImpl.java
index f4d8949..46acb97 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImpl.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/MessageFormatterImpl.java
@@ -12,13 +12,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
+package org.apache.tapestry5.commons.internal.util;
 
 import java.util.Locale;
 
+import org.apache.tapestry5.commons.MessageFormatter;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
+
 
 public class MessageFormatterImpl implements MessageFormatter
 {
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/MessagesImpl.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/MessagesImpl.java
similarity index 86%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/MessagesImpl.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/MessagesImpl.java
index c06ef90..2d42d58 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/MessagesImpl.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/MessagesImpl.java
@@ -12,12 +12,17 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.util;
+package org.apache.tapestry5.commons.internal.util;
 
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.util.AbstractMessages;
+import java.util.Enumeration;
+import java.util.Locale;
+import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.Set;
 
-import java.util.*;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.util.AbstractMessages;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 /**
  * Implementation of {@link org.apache.tapestry5.ioc.Messages} based around a {@link java.util.ResourceBundle}.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/TapestryException.java b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/TapestryException.java
similarity index 93%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/TapestryException.java
rename to commons/src/main/java/org/apache/tapestry5/commons/internal/util/TapestryException.java
index 6e23c5b..957dc40 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/TapestryException.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/internal/util/TapestryException.java
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.util;
+package org.apache.tapestry5.commons.internal.util;
 
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Locatable;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Exception class used as a replacement for {@link java.lang.RuntimeException} when the exception is related to a
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/ClassPropertyAdapter.java b/commons/src/main/java/org/apache/tapestry5/commons/services/ClassPropertyAdapter.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/ClassPropertyAdapter.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/ClassPropertyAdapter.java
index 5080fb2..1232a1b 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/ClassPropertyAdapter.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/ClassPropertyAdapter.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
+package org.apache.tapestry5.commons.services;
 
 import java.lang.annotation.Annotation;
 import java.util.List;
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/Coercion.java b/commons/src/main/java/org/apache/tapestry5/commons/services/Coercion.java
similarity index 95%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/Coercion.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/Coercion.java
index b7a4cc8..414332b 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/Coercion.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/Coercion.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
+package org.apache.tapestry5.commons.services;
 
 /**
  * Responsible for converting from one type to another. This is used primarily around component parameters.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java b/commons/src/main/java/org/apache/tapestry5/commons/services/CoercionTuple.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/CoercionTuple.java
index 746de1e..af795b5 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/CoercionTuple.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
+package org.apache.tapestry5.commons.services;
 
 import org.apache.tapestry5.plastic.PlasticUtils;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/services/DataTypeAnalyzer.java b/commons/src/main/java/org/apache/tapestry5/commons/services/DataTypeAnalyzer.java
similarity index 95%
rename from commons/src/main/java/org/apache/tapestry5/services/DataTypeAnalyzer.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/DataTypeAnalyzer.java
index 39f6ee6..ab7165a 100644
--- a/commons/src/main/java/org/apache/tapestry5/services/DataTypeAnalyzer.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/DataTypeAnalyzer.java
@@ -10,11 +10,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.commons.services;
 
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
 
 /**
  * Used by {@link BeanModelSource} to identify the type of data associated with a particular property (represented as a
diff --git a/commons/src/main/java/org/apache/tapestry5/services/GenericsResolver.java b/commons/src/main/java/org/apache/tapestry5/commons/services/GenericsResolver.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/services/GenericsResolver.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/GenericsResolver.java
index 4d9766b..af4a627 100644
--- a/commons/src/main/java/org/apache/tapestry5/services/GenericsResolver.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/GenericsResolver.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.commons.services;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
@@ -18,7 +18,7 @@ import java.lang.reflect.Type;
 import java.util.Iterator;
 import java.util.ServiceLoader;
 
-import org.apache.tapestry5.internal.services.GenericsResolverImpl;
+import org.apache.tapestry5.commons.internal.services.GenericsResolverImpl;
 
 /**
  * <p>Methods related to the use of Java 5+ generics.
diff --git a/commons/src/main/java/org/apache/tapestry5/services/InvalidationEventHub.java b/commons/src/main/java/org/apache/tapestry5/commons/services/InvalidationEventHub.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/services/InvalidationEventHub.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/InvalidationEventHub.java
index 3bea4f5..8dace80 100644
--- a/commons/src/main/java/org/apache/tapestry5/services/InvalidationEventHub.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/InvalidationEventHub.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.commons.services;
 
 import java.util.Map;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/services/InvalidationListener.java b/commons/src/main/java/org/apache/tapestry5/commons/services/InvalidationListener.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/services/InvalidationListener.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/InvalidationListener.java
index b9b4aa3..843dc6b 100644
--- a/commons/src/main/java/org/apache/tapestry5/services/InvalidationListener.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/InvalidationListener.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.services;
+package org.apache.tapestry5.commons.services;
 
 /**
  * Interface for objects that may cache information that can be invalidated. Invalidation occurs when external files,
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/PlasticProxyFactory.java b/commons/src/main/java/org/apache/tapestry5/commons/services/PlasticProxyFactory.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/PlasticProxyFactory.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/PlasticProxyFactory.java
index 99bcc55..3b8b9bc 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/PlasticProxyFactory.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/PlasticProxyFactory.java
@@ -12,19 +12,19 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
+package org.apache.tapestry5.commons.services;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.ObjectCreator;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.ObjectCreator;
 import org.apache.tapestry5.ioc.annotations.IncompatibleChange;
 import org.apache.tapestry5.plastic.ClassInstantiator;
 import org.apache.tapestry5.plastic.PlasticClassListenerHub;
 import org.apache.tapestry5.plastic.PlasticClassTransformation;
 import org.apache.tapestry5.plastic.PlasticClassTransformer;
 
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
 /**
  * A service used to create proxies of varying types. As a secondary concern, manages to identify the
  * location of methods and constructors, which is important for exception reporting.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/PropertyAccess.java b/commons/src/main/java/org/apache/tapestry5/commons/services/PropertyAccess.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/PropertyAccess.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/PropertyAccess.java
index 05a6005..0e68e08 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/PropertyAccess.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/PropertyAccess.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
+package org.apache.tapestry5.commons.services;
 
 import java.lang.annotation.Annotation;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/PropertyAdapter.java b/commons/src/main/java/org/apache/tapestry5/commons/services/PropertyAdapter.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/PropertyAdapter.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/PropertyAdapter.java
index 0e068c4..4569359 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/PropertyAdapter.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/PropertyAdapter.java
@@ -10,13 +10,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
+package org.apache.tapestry5.commons.services;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 
+import org.apache.tapestry5.commons.AnnotationProvider;
+
 /**
  * Provides access to a single property within a class. Acts as an {@link org.apache.tapestry5.ioc.AnnotationProvider};
  * when searching for annotations, the read method (if present) is checked first, followed by the write method, followed
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/services/TypeCoercer.java b/commons/src/main/java/org/apache/tapestry5/commons/services/TypeCoercer.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/ioc/services/TypeCoercer.java
rename to commons/src/main/java/org/apache/tapestry5/commons/services/TypeCoercer.java
index b41c18c..be77a98 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/services/TypeCoercer.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/services/TypeCoercer.java
@@ -10,7 +10,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.services;
+package org.apache.tapestry5.commons.services;
 
 import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/AbstractMessages.java b/commons/src/main/java/org/apache/tapestry5/commons/util/AbstractMessages.java
similarity index 90%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/AbstractMessages.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/AbstractMessages.java
index 590c337..f13b876 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/AbstractMessages.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/AbstractMessages.java
@@ -12,16 +12,15 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.MessageFormatterImpl;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Locale;
 import java.util.Map;
 
+import org.apache.tapestry5.commons.MessageFormatter;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.MessageFormatterImpl;
+
 /**
  * Abstract implementation of {@link Messages} that doesn't know where values come from (that information is supplied in
  * a subclass, via the {@link #valueForKey(String)} method).
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/AvailableValues.java b/commons/src/main/java/org/apache/tapestry5/commons/util/AvailableValues.java
similarity index 93%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/AvailableValues.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/AvailableValues.java
index b2f1386..9fd649a 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/AvailableValues.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/AvailableValues.java
@@ -12,15 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
 
 /**
  * Used (as part of a {@link UnknownValueException} to identify what available values
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.java b/commons/src/main/java/org/apache/tapestry5/commons/util/CaseInsensitiveMap.java
similarity index 99%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/CaseInsensitiveMap.java
index d2eadf9..f83e4eb 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/CaseInsensitiveMap.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
+package org.apache.tapestry5.commons.util;
 
 import java.io.Serializable;
 import java.util.*;
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/CollectionFactory.java b/commons/src/main/java/org/apache/tapestry5/commons/util/CollectionFactory.java
similarity index 93%
rename from commons/src/main/java/org/apache/tapestry5/ioc/internal/util/CollectionFactory.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/CollectionFactory.java
index f2da320..1ba56ab 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/internal/util/CollectionFactory.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/CollectionFactory.java
@@ -10,12 +10,17 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.util.CaseInsensitiveMap;
-import org.apache.tapestry5.ioc.util.Stack;
-
-import java.util.*;
+package org.apache.tapestry5.commons.util;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.CopyOnWriteArrayList;
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/ExceptionUtils.java b/commons/src/main/java/org/apache/tapestry5/commons/util/ExceptionUtils.java
similarity index 95%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/ExceptionUtils.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/ExceptionUtils.java
index 2feaeca..164c7cf 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/ExceptionUtils.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/ExceptionUtils.java
@@ -12,10 +12,10 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
+package org.apache.tapestry5.commons.util;
 
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
+import org.apache.tapestry5.commons.services.ClassPropertyAdapter;
+import org.apache.tapestry5.commons.services.PropertyAccess;
 
 /**
  * Contains static methods useful for manipulating exceptions.
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/util/IntegerRange.java b/commons/src/main/java/org/apache/tapestry5/commons/util/IntegerRange.java
similarity index 98%
rename from commons/src/main/java/org/apache/tapestry5/internal/util/IntegerRange.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/IntegerRange.java
index 7b2b7ab..3183a2a 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/util/IntegerRange.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/IntegerRange.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.util;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Iterator;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/internal/util/MultiKey.java b/commons/src/main/java/org/apache/tapestry5/commons/util/MultiKey.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/internal/util/MultiKey.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/MultiKey.java
index 5d6f283..bd595fc 100644
--- a/commons/src/main/java/org/apache/tapestry5/internal/util/MultiKey.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/MultiKey.java
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.internal.util;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Arrays;
 
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/Stack.java b/commons/src/main/java/org/apache/tapestry5/commons/util/Stack.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/Stack.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/Stack.java
index 4775888..358ca7b 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/Stack.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/Stack.java
@@ -12,9 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+package org.apache.tapestry5.commons.util;
 
 /**
  * A simple, streamlined implementation of {@link java.util.Stack}. The implementation is <em>not</em> threadsafe.
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/StrategyRegistry.java b/commons/src/main/java/org/apache/tapestry5/commons/util/StrategyRegistry.java
similarity index 97%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/StrategyRegistry.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/StrategyRegistry.java
index fbdfc6a..fa89fce 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/StrategyRegistry.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/StrategyRegistry.java
@@ -12,15 +12,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InheritanceSearch;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tapestry5.commons.internal.util.InheritanceSearch;
+
 /**
  * A key component in implementing the "Gang of Four" Strategy pattern. A StrategyRegistry will match up a given input
  * type with a registered strategy for that type.
diff --git a/commons/src/main/java/org/apache/tapestry5/util/StringToEnumCoercion.java b/commons/src/main/java/org/apache/tapestry5/commons/util/StringToEnumCoercion.java
similarity index 88%
rename from commons/src/main/java/org/apache/tapestry5/util/StringToEnumCoercion.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/StringToEnumCoercion.java
index 9a1a37f..db59464 100644
--- a/commons/src/main/java/org/apache/tapestry5/util/StringToEnumCoercion.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/StringToEnumCoercion.java
@@ -10,16 +10,13 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Map;
 
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+import org.apache.tapestry5.commons.services.Coercion;
+
 /**
  * A {@link org.apache.tapestry5.ioc.services.Coercion} for converting strings into an instance of a particular
  * enumerated type. The {@link Enum#name() name} is used as the key to identify the enum instance, in a case-insensitive
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/TimeInterval.java b/commons/src/main/java/org/apache/tapestry5/commons/util/TimeInterval.java
similarity index 96%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/TimeInterval.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/TimeInterval.java
index dbb1cff..0ac5836 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/TimeInterval.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/TimeInterval.java
@@ -10,15 +10,14 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalCommonsUtils;
+package org.apache.tapestry5.commons.util;
 
 import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.tapestry5.commons.internal.util.InternalCommonsUtils;
+
 /**
  * Used to represent a period of time, specifically as a configuration value. This is often used to specify timeouts.
  *
diff --git a/commons/src/main/java/org/apache/tapestry5/ioc/util/UnknownValueException.java b/commons/src/main/java/org/apache/tapestry5/commons/util/UnknownValueException.java
similarity index 92%
rename from commons/src/main/java/org/apache/tapestry5/ioc/util/UnknownValueException.java
rename to commons/src/main/java/org/apache/tapestry5/commons/util/UnknownValueException.java
index 470b611..cff7b3c 100644
--- a/commons/src/main/java/org/apache/tapestry5/ioc/util/UnknownValueException.java
+++ b/commons/src/main/java/org/apache/tapestry5/commons/util/UnknownValueException.java
@@ -12,9 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package org.apache.tapestry5.ioc.util;
+package org.apache.tapestry5.commons.util;
 
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 
 /**
  * Special exception used when a value (typically from a map) is referenced that does not exist. Uses a
diff --git a/genericsresolver-guava/src/main/java/org/apache/tapestry5/internal/genericsresolverguava/GuavaGenericsResolver.java b/genericsresolver-guava/src/main/java/org/apache/tapestry5/internal/genericsresolverguava/GuavaGenericsResolver.java
index a7f97c5..3966b5a 100644
--- a/genericsresolver-guava/src/main/java/org/apache/tapestry5/internal/genericsresolverguava/GuavaGenericsResolver.java
+++ b/genericsresolver-guava/src/main/java/org/apache/tapestry5/internal/genericsresolverguava/GuavaGenericsResolver.java
@@ -16,7 +16,7 @@ import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.lang.reflect.Type;
 
-import org.apache.tapestry5.services.GenericsResolver;
+import org.apache.tapestry5.commons.services.GenericsResolver;
 
 import com.google.common.reflect.TypeToken;
 
diff --git a/genericsresolver-guava/src/test/java/org/apache/tapestry5/internal/genericsresolverguava/AbstractBeanModelSourceImplTest.java b/genericsresolver-guava/src/test/java/org/apache/tapestry5/internal/genericsresolverguava/AbstractBeanModelSourceImplTest.java
index b29621b..e5b6f29 100644
--- a/genericsresolver-guava/src/test/java/org/apache/tapestry5/internal/genericsresolverguava/AbstractBeanModelSourceImplTest.java
+++ b/genericsresolver-guava/src/test/java/org/apache/tapestry5/internal/genericsresolverguava/AbstractBeanModelSourceImplTest.java
@@ -23,9 +23,9 @@ import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.beanmodel.internal.services.PropertyAccessImpl;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.easymock.EasyMock;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java
index ff57390..6ab27d5 100644
--- a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java
+++ b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/modules/BeanValidatorModule.java
@@ -15,10 +15,10 @@ package org.apache.tapestry5.beanvalidator.modules;
 
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.beanvalidator.*;
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.internal.beanvalidator.*;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Local;
 import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BaseCCD.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BaseCCD.java
index 78ed0de..7d3b198 100644
--- a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BaseCCD.java
+++ b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BaseCCD.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.beanvalidator;
 import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptor;
 import org.apache.tapestry5.json.JSONObject;
 
-import java.util.Set;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newSet;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
+import java.util.Set;
 
 /**
  * Describes a single client-side constraint.
diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java
index db3c2d2..d8e7e5d 100644
--- a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java
+++ b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java
@@ -20,8 +20,8 @@ import org.apache.tapestry5.ValidationException;
 import org.apache.tapestry5.beanvalidator.BeanValidatorGroupSource;
 import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptor;
 import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptorSource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FormSupport;
 
diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java
index 2bac3b3..4f71f7f 100644
--- a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java
+++ b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java
@@ -23,9 +23,9 @@ import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldValidator;
 import org.apache.tapestry5.beanvalidator.BeanValidatorGroupSource;
 import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptorSource;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.internal.services.CompositeFieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.services.Core;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FieldValidatorDefaultSource;
diff --git a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java
index 72575e8..3faef23 100644
--- a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java
+++ b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.beanvalidator;
 import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptor;
 import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptorSource;
 
-import java.util.Collection;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+import java.util.Collection;
 
 public class ClientConstraintDescriptorImpl implements ClientConstraintDescriptorSource
 {
diff --git a/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java b/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java
index 5269702..71f6836 100644
--- a/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java
+++ b/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java
@@ -15,9 +15,9 @@ package org.example.testapp.services;
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.beanvalidator.BeanValidatorConfigurer;
 import org.apache.tapestry5.beanvalidator.modules.BeanValidatorModule;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.ioc.annotations.ImportModule;
 
 @ImportModule(BeanValidatorModule.class)
diff --git a/tapestry-clojure/src/main/java/org/apache/tapestry5/clojure/modules/ClojureModule.java b/tapestry-clojure/src/main/java/org/apache/tapestry5/clojure/modules/ClojureModule.java
index 275fe9a..dcd809f 100644
--- a/tapestry-clojure/src/main/java/org/apache/tapestry5/clojure/modules/ClojureModule.java
+++ b/tapestry-clojure/src/main/java/org/apache/tapestry5/clojure/modules/ClojureModule.java
@@ -18,10 +18,10 @@ import clojure.lang.RT;
 import clojure.lang.Var;
 import org.apache.tapestry5.clojure.ClojureBuilder;
 import org.apache.tapestry5.clojure.MethodToFunctionSymbolMapper;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.internal.clojure.AnnotationMapper;
 import org.apache.tapestry5.internal.clojure.ClojureBuilderImpl;
 import org.apache.tapestry5.internal.clojure.DefaultMapper;
-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.Startup;
diff --git a/tapestry-clojure/src/main/java/org/apache/tapestry5/internal/clojure/ClojureBuilderImpl.java b/tapestry-clojure/src/main/java/org/apache/tapestry5/internal/clojure/ClojureBuilderImpl.java
index 2e42946..d1884a7 100644
--- a/tapestry-clojure/src/main/java/org/apache/tapestry5/internal/clojure/ClojureBuilderImpl.java
+++ b/tapestry-clojure/src/main/java/org/apache/tapestry5/internal/clojure/ClojureBuilderImpl.java
@@ -18,10 +18,10 @@ import clojure.lang.Symbol;
 import org.apache.tapestry5.clojure.ClojureBuilder;
 import org.apache.tapestry5.clojure.MethodToFunctionSymbolMapper;
 import org.apache.tapestry5.clojure.Namespace;
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.plastic.*;
 
 import java.lang.reflect.Method;
diff --git a/tapestry-clojure/src/test/groovy/org/apache/tapestry5/clojure/tests/ClojureBuilderSpec.groovy b/tapestry-clojure/src/test/groovy/org/apache/tapestry5/clojure/tests/ClojureBuilderSpec.groovy
index 29dde21..8d79fee 100644
--- a/tapestry-clojure/src/test/groovy/org/apache/tapestry5/clojure/tests/ClojureBuilderSpec.groovy
+++ b/tapestry-clojure/src/test/groovy/org/apache/tapestry5/clojure/tests/ClojureBuilderSpec.groovy
@@ -4,6 +4,7 @@ import org.apache.tapestry5.clojure.modules.ClojureModule
 import org.apache.tapestry5.ioc.Registry
 import org.apache.tapestry5.ioc.RegistryBuilder
 import org.apache.tapestry5.modules.TapestryModule
+
 import spock.lang.AutoCleanup
 import spock.lang.Shared
 import spock.lang.Specification
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java b/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
index 9ea0ddb..b18488e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 
 /**
  * An Asset is any kind of resource that can be exposed to the client web browser. Although quite often an Asset is a
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java b/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java
index 0c49f4b..aa778c3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 
 /**
  * A binding is a connection between a component and its container (another component), that allows the embedded
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java b/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java
index 4fabd7c..b666fa1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Locatable;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Exception thrown when a {@link Block} is requested but not found.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java b/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java
index e6e1839..23c23fa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java
@@ -12,9 +12,9 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.PageLifecycleCallbackHub;
@@ -79,7 +79,7 @@ public interface ComponentResources extends ComponentResourcesCommon
      *
      * @param embeddedId
      *         selects the embedded component (case is ignored)
-     * @throws org.apache.tapestry5.ioc.util.UnknownValueException
+     * @throws org.apache.tapestry5.commons.util.UnknownValueException
      *         if this component does not contain a component with the given id
      */
 
@@ -227,7 +227,7 @@ public interface ComponentResources extends ComponentResourcesCommon
     List<String> getInformalParameterNames();
 
     /**
-     * Reads an informal parameter and {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer coerces} the bound
+     * Reads an informal parameter and {@linkplain org.apache.tapestry5.commons.services.TypeCoercer coerces} the bound
      * value to the indicated type.
      *
      * @param name
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java b/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java
index ddaa422..eeb66aa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.Locatable;
+import org.apache.tapestry5.commons.Locatable;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 import org.slf4j.Logger;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java b/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
index 245a52a..4aaa96d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
@@ -12,8 +12,8 @@
 
 package org.apache.tapestry5;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.util.Collections;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java b/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java
index c6aa4e9..5ef843b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java
@@ -19,7 +19,7 @@ package org.apache.tapestry5;
  * ability to coerce
  * or encode parameters as needed.
  * 
- * @see org.apache.tapestry5.ioc.services.TypeCoercer
+ * @see org.apache.tapestry5.commons.services.TypeCoercer
  * @see org.apache.tapestry5.ValueEncoder
  */
 public interface EventContext
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java b/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java
index 126180d..d8b904d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java
@@ -14,11 +14,11 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
 import java.util.Collections;
 import java.util.List;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+
 /**
  * Utility methods related to generating markup.
  */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java b/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java
index e4893c3..52dc5c1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 
 /**
  * Provides access to blocks and messages used when overriding property labels, and property display or edit blocks.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java
index bccb1ee..76ca905 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.io.Serializable;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java b/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java
index 7461dca..0055376 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5;
 
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java b/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java
index 3476c85..5e6b1e1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java
@@ -27,7 +27,7 @@ package org.apache.tapestry5;
  * Tapestry can automatically generate ValueEncoders for enums as well as
  * Collections of any object types for which a coercion can be found from a
  * formatted String, such as primitives, primitive wrappers, Dates, Calendars,
- * "name=value" strings, and any types for which a {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer
+ * "name=value" strings, and any types for which a {@linkplain org.apache.tapestry5.commons.services.TypeCoercer
  * custom type coercion} has been contributed.
  *
  * Custom ValueEncoder implementations will need to be supplied for entity type
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java b/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java
index 3d24f23..93c603a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.ajax;
 
 import org.apache.tapestry5.ClientBodyElement;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.util.Map;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/alerts/AlertStorage.java b/tapestry-core/src/main/java/org/apache/tapestry5/alerts/AlertStorage.java
index be4deca..21555c4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/alerts/AlertStorage.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/alerts/AlertStorage.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.alerts;
 
 import org.apache.tapestry5.OptimizedSessionPersistedObject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.LockSupport;
+import org.apache.tapestry5.commons.internal.util.LockSupport;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.io.Serializable;
 import java.util.Iterator;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
index cd56f3c..590edb4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
@@ -14,6 +14,7 @@ package org.apache.tapestry5.corelib.base;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.corelib.mixins.DiscardBody;
 import org.apache.tapestry5.corelib.mixins.RenderInformals;
 import org.apache.tapestry5.internal.BeanValidationContext;
@@ -22,7 +23,6 @@ import org.apache.tapestry5.internal.services.FormControlNameManager;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FormSupport;
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 d8033bd..b5baf6a 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
@@ -16,10 +16,10 @@ import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.beanmodel.PropertyModel;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.BeanBlockSource;
 import org.apache.tapestry5.services.Core;
 import org.apache.tapestry5.services.Environment;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
index ed3df46..228ac0f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
@@ -15,8 +15,8 @@ package org.apache.tapestry5.corelib.base;
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.beaneditor.Width;
+import org.apache.tapestry5.commons.AnnotationProvider;
 import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.ioc.AnnotationProvider;
 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 748a2a4..4db4fe9 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
@@ -15,11 +15,11 @@ 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.commons.services.TypeCoercer;
 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.ComponentDefaultProvider;
 import org.apache.tapestry5.services.Environment;
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 185afd5..93f9c12 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
@@ -23,11 +23,11 @@ import org.apache.tapestry5.annotations.SupportsInformalParameters;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.BeanModelUtils;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.BeanEditContextImpl;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.BeanValidationContextImpl;
 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.Environment;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
index 0c764bd..9dc7099 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checklist.java
@@ -15,10 +15,10 @@ package org.apache.tapestry5.corelib.components;
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.Request;
 
 import java.util.Collections;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
index 1f6de5e..c986beb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
@@ -17,9 +17,9 @@ import org.apache.tapestry5.annotations.Events;
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.RequestParameter;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Dynamic.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Dynamic.java
index b728655..ee08bed 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Dynamic.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Dynamic.java
@@ -17,9 +17,9 @@ import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.SupportsInformalParameters;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.services.dynamic.DynamicDelegate;
 import org.apache.tapestry5.services.dynamic.DynamicTemplate;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java
index 768d988..7438dfd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java
@@ -23,9 +23,9 @@ import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.ValidationTracker;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.services.ComponentOverride;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
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 062a638..547ea1c 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
@@ -15,6 +15,11 @@ 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.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.corelib.ClientValidation;
 import org.apache.tapestry5.corelib.internal.ComponentActionSink;
 import org.apache.tapestry5.corelib.internal.FormSupportImpl;
@@ -26,14 +31,9 @@ import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.FormControlNameManager;
 import org.apache.tapestry5.internal.services.HeartbeatImpl;
 import org.apache.tapestry5.internal.util.AutofocusValidationDecorator;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-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;
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 6cf048d..185f1b6 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
@@ -196,7 +196,7 @@ public class Grid implements GridModel, ClientElement
     /**
      * If true, then the Grid will also render a table element complete with headers if the data source is empty.
      * If set to true, a model parameter will have to be specified. A default model for a specific class can be
-     * created using {@link BeanModelSource#createDisplayModel(Class, org.apache.tapestry5.ioc.Messages)}.
+     * created using {@link BeanModelSource#createDisplayModel(Class, org.apache.tapestry5.commons.Messages)}.
      */
     @Parameter
     private boolean renderTableIfEmpty = false;
@@ -447,7 +447,7 @@ public class Grid implements GridModel, ClientElement
      * parameter (via {@link org.apache.tapestry5.grid.GridDataSource#getRowType()}. Subclasses may override to provide
      * a different mechanism. The returning binding is variant (not invariant).
      *
-     * @see BeanModelSource#createDisplayModel(Class, org.apache.tapestry5.ioc.Messages)
+     * @see BeanModelSource#createDisplayModel(Class, org.apache.tapestry5.commons.Messages)
      */
     protected Binding defaultModel()
     {
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 5be3d11..5e1e26d 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
@@ -20,11 +20,11 @@ import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.PropertyOverrides;
 import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.GridModel;
 import org.apache.tapestry5.grid.GridSortModel;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.Request;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java
index 97c63e1..bf0e0f8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java
@@ -17,10 +17,10 @@ package org.apache.tapestry5.corelib.components;
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Events;
 import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.grid.GridDataSource;
 import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.Request;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Html5DateField.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Html5DateField.java
index 21cfabe..d66dff7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Html5DateField.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Html5DateField.java
@@ -26,8 +26,8 @@ import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
 import org.apache.tapestry5.annotations.Events;
 import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.corelib.base.AbstractField;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
index f03d0ed..c2a2c56 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
@@ -14,9 +14,9 @@ package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.corelib.LoopFormState;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Heartbeat;
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 cde9165..f010491 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
@@ -20,10 +20,10 @@ import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 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.BeanBlockSource;
 import org.apache.tapestry5.services.Core;
 import org.apache.tapestry5.services.Environment;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
index 053f056..cbc3574 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
@@ -18,9 +18,9 @@ import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.annotations.Events;
 import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.FormSupport;
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 aa9b197..9439ec2 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
@@ -15,6 +15,8 @@ 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.commons.Messages;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.corelib.base.AbstractField;
 import org.apache.tapestry5.corelib.data.BlankOption;
 import org.apache.tapestry5.corelib.data.SecureOption;
@@ -24,10 +26,8 @@ import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.util.CaptureResultCallback;
 import org.apache.tapestry5.internal.util.SelectModelRenderer;
-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.FieldValidatorDefaultSource;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Request;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java
index 7bb3859..277443c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java
@@ -15,9 +15,9 @@ package org.apache.tapestry5.corelib.internal;
 import org.apache.tapestry5.ComponentAction;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.Locatable;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
index 6284632..2a9cbad 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
@@ -14,10 +14,10 @@ package org.apache.tapestry5.corelib.mixins;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.AbstractEventContext;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.compatibility.DeprecationWarning;
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 fe1df02..fa93da4 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
@@ -22,6 +22,7 @@ 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.commons.util.CollectionFactory;
 import org.apache.tapestry5.corelib.base.AbstractInternalPage;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
@@ -31,7 +32,6 @@ import org.apache.tapestry5.internal.services.PageActivationContextCollector;
 import org.apache.tapestry5.internal.services.ReloadHelper;
 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.BaseURLSource;
 import org.apache.tapestry5.services.ExceptionReporter;
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 7f0ccdf..266343b 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
@@ -20,17 +20,17 @@ import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.beaneditor.Validate;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.corelib.components.Zone;
 import org.apache.tapestry5.func.*;
 import org.apache.tapestry5.internal.PageCatalogTotals;
 import org.apache.tapestry5.internal.services.PageSource;
 import org.apache.tapestry5.internal.services.ReloadHelper;
 import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.OperationTracker;
 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.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 d3d0bf8..ab65dc9 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
@@ -20,6 +20,7 @@ import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.Environmental;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.corelib.components.BeanEditForm;
 import org.apache.tapestry5.corelib.components.Checkbox;
 import org.apache.tapestry5.corelib.components.DateField;
@@ -28,7 +29,6 @@ import org.apache.tapestry5.corelib.components.Select;
 import org.apache.tapestry5.corelib.components.TextArea;
 import org.apache.tapestry5.corelib.components.TextField;
 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.PropertyEditContext;
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 df58d95..8e9f2c1 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
@@ -16,7 +16,7 @@ import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.annotations.*;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.Registry;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java
index a9a787b..4ffa6a9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.dom;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
 import java.util.Set;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+
 /**
  * Default implementation of {@link org.apache.tapestry5.dom.MarkupModel} that is appropriate for traditional (X)HTML
  * markup. Assumes that all tags are lower-case.  The majority of elements will be "expanded" (meaning a complete start
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java b/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java
index a741fd0..f48ca8f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.dom;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.io.PrintWriter;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java b/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java
index cbc29b5..e7fa506 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java
@@ -12,12 +12,12 @@
 
 package org.apache.tapestry5.dom;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.func.Predicate;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.util.PrintOutCollector;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.Stack;
 
 import java.io.PrintWriter;
 import java.util.*;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/dom/Html5MarkupModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/dom/Html5MarkupModel.java
index e423c9a..123e4b7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/dom/Html5MarkupModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/dom/Html5MarkupModel.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.dom;
 
 import java.util.Set;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 /**
  * Implementation of {@link org.apache.tapestry5.dom.MarkupModel} that correctly handles HTML5 void
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java b/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java
index bc7ad82..654edca 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java
@@ -14,11 +14,11 @@
 
 package org.apache.tapestry5.dom;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
 import java.util.Collections;
 import java.util.Map;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+
 /**
  * Used by {@link org.apache.tapestry5.dom.Element} to construct namespace URI to prefix maps.
  *
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java
index 2a68d64..64a6704 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java
@@ -14,7 +14,9 @@
 
 package org.apache.tapestry5.internal;
 
-import org.apache.tapestry5.ioc.*;
+import org.apache.tapestry5.commons.*;
+import org.apache.tapestry5.ioc.ModuleBuilderSource;
+import org.apache.tapestry5.ioc.ServiceResources;
 import org.apache.tapestry5.ioc.def.ContributionDef;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java
index 8199dc0..56a74c5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java
@@ -19,7 +19,7 @@ import org.apache.tapestry5.ioc.internal.services.ResourceSymbolProvider;
 import org.apache.tapestry5.services.Context;
 
 /**
- * Makes a {@link org.apache.tapestry5.ioc.Resource} in the {@link org.apache.tapestry5.services.Context} available as a
+ * Makes a {@link org.apache.tapestry5.commons.Resource} in the {@link org.apache.tapestry5.services.Context} available as a
  * {@link org.apache.tapestry5.ioc.services.SymbolProvider}
  *
  * @since 5.1.0.5
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValueLabelProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValueLabelProvider.java
index 12309ac..e8490b3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValueLabelProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValueLabelProvider.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal;
 
-import org.apache.tapestry5.ioc.services.TypeCoercer;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.services.ValueLabelProvider;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
index 8370ae0..8f84269 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
@@ -14,8 +14,8 @@ package org.apache.tapestry5.internal;
 
 import org.apache.tapestry5.ContentType;
 import org.apache.tapestry5.annotations.PublishEvent;
+import org.apache.tapestry5.commons.util.TimeInterval;
 import org.apache.tapestry5.dom.MarkupModel;
-import org.apache.tapestry5.ioc.util.TimeInterval;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.javascript.JavaScriptStack;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java
index b6ac3b5..ff9a6e7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.internal;
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 
 public class PropertyOverridesImpl implements PropertyOverrides
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java
index e25868f..cc17091 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.services.SymbolProvider;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java
index 205a891..28af69b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java
@@ -14,11 +14,11 @@
 
 package org.apache.tapestry5.internal;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.def.ContributionDef;
 import org.apache.tapestry5.ioc.def.DecoratorDef;
 import org.apache.tapestry5.ioc.def.ModuleDef;
 import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.util.Collections;
 import java.util.Set;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java
index 068132b..1ef7592 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal;
 
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceResources;
 import org.apache.tapestry5.ioc.services.SymbolProvider;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java
index 41bd45e..3e25262 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java
@@ -13,13 +13,18 @@
 package org.apache.tapestry5.internal;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.services.*;
 import org.apache.tapestry5.ioc.IOCUtilities;
 import org.apache.tapestry5.ioc.Registry;
 import org.apache.tapestry5.ioc.RegistryBuilder;
 import org.apache.tapestry5.ioc.def.ContributionDef;
 import org.apache.tapestry5.ioc.def.ModuleDef;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.*;
+import org.apache.tapestry5.ioc.services.ServiceActivity;
+import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
+import org.apache.tapestry5.ioc.services.Status;
+import org.apache.tapestry5.ioc.services.SymbolProvider;
+import org.apache.tapestry5.ioc.services.SymbolSource;
 import org.apache.tapestry5.modules.TapestryModule;
 import org.slf4j.Logger;
 
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 bbf61fa..8678f84 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
@@ -16,11 +16,11 @@ 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.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.ComponentEventRequestParameters;
 import org.apache.tapestry5.services.LinkCreationListener;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java
index d3caa9a..bf86ff2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java
@@ -15,7 +15,7 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 
 /**
  * Holds the current (overrides) Messages object and override id for placemnt into the environment
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java
index 2ae9b81..ad44b2e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.internal.beaneditor;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.PropertyEditContext;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java
index 440b6a4..4c4241f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 
 import java.util.Arrays;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java
index df4600e..c2d0038 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.beaneditor;
 
 import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 
 import java.util.Arrays;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java
index 572d61a..cffda39 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.Binding2;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Type;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
index 99259c9..0ec556d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.Asset2;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Location;
 
 public class AssetBinding extends AbstractBinding
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
index c0f532e..e2b756a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.internal.bindings;
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.BindingFactory;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java
index 46274fc..6af9861 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 public class BlockBinding extends AbstractBinding
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java
index c0bce25..f285e8f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.BindingFactory;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java
index 5617939..584b260 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 public class ComponentBinding extends AbstractBinding
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java
index 9432d53..34b9294 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.BindingFactory;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
index 1abb9bb..78d397f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.internal.bindings;
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.BindingFactory;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
index 1e8ab0d..850539c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.bindings;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Extends {@link org.apache.tapestry5.internal.bindings.AbstractBinding} with a description and a binding type, with
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java
index 8b93de6..aefd611 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java
@@ -12,11 +12,11 @@
 
 package org.apache.tapestry5.internal.bindings;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Binding type for literal, immutable values. Literal bindings are {@linkplain org.apache.tapestry5.Binding#isInvariant()
- * invariant}; any value provided by a LiteralBinding, even if {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer#coerce(Object,
+ * invariant}; any value provided by a LiteralBinding, even if {@linkplain org.apache.tapestry5.commons.services.TypeCoercer#coerce(Object,
  * Class) coerced}, will be cached aggresively by Tapestry cmponent.
  *
  * LiteralBindings are often used for literal string values supplied in-line in the component template, but is used
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java
index 24ae056..cc7f5a7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.BindingFactory;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java
index 0600850..d8443e6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.BindingFactory;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java
index d530133..fc1791f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.internal.bindings;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.BindingFactory;
 import org.apache.tapestry5.services.NullFieldStrategySource;
 
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 ffd8457..78e254e 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
@@ -20,9 +20,9 @@ import java.lang.reflect.Type;
 import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.beanmodel.PropertyConduit2;
 import org.apache.tapestry5.beanmodel.internal.services.Invariant;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 
 /**
  * Base class for bindings created by the {@link org.apache.tapestry5.internal.bindings.PropBindingFactory}. A subclass
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 1bb7e1e..4fe2bf1 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
@@ -16,8 +16,8 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 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.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
 import org.apache.tapestry5.services.BindingFactory;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java
index 6c527eb..f0d7ca7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 public class RenderVariableBinding extends AbstractBinding
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java
index 84948ef..c4c63f8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.services.BindingFactory;
 
 public class RenderVariableBindingFactory implements BindingFactory
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
index dce5a6b..64c665d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.internal.bindings;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.ioc.services.SymbolSource;
 import org.apache.tapestry5.services.BindingFactory;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java
index c6e2073..017fcc1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.internal.bindings;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
 import org.apache.tapestry5.services.BindingFactory;
 import org.apache.tapestry5.services.FieldTranslatorSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java
index 83393cb..6d8684f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java
@@ -18,9 +18,9 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.services.BindingFactory;
 import org.apache.tapestry5.services.FieldValidatorSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateParserImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateParserImpl.java
index 13d6237..271bf94 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateParserImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateParserImpl.java
@@ -14,11 +14,11 @@
 
 package org.apache.tapestry5.internal.dynamic;
 
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.PageSource;
 import org.apache.tapestry5.internal.services.TemplateParser;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
 import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
 import org.apache.tapestry5.services.BindingSource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateSaxParser.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateSaxParser.java
index 43e2253..87c793c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateSaxParser.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/dynamic/DynamicTemplateSaxParser.java
@@ -18,18 +18,18 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.func.Worker;
 import org.apache.tapestry5.internal.services.XMLTokenStream;
 import org.apache.tapestry5.internal.services.XMLTokenType;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 import org.apache.tapestry5.services.BindingSource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java
index de740ac..b8e4586 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java
@@ -14,16 +14,16 @@
 
 package org.apache.tapestry5.internal.event;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.InvalidationListener;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.services.InvalidationListener;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.util.List;
 import java.util.Map;
 
 /**
  * Base implementation class for classes (especially services) that need to manage a list of
- * {@link org.apache.tapestry5.services.InvalidationListener}s.
+ * {@link org.apache.tapestry5.commons.services.InvalidationListener}s.
  */
 public class InvalidationEventHubImpl implements InvalidationEventHub
 {
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 dd338cf..dd23187 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
@@ -20,10 +20,10 @@ import java.util.Comparator;
 import java.util.List;
 
 import org.apache.tapestry5.beanmodel.PropertyConduit;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.grid.ColumnSort;
 import org.apache.tapestry5.grid.GridDataSource;
 import org.apache.tapestry5.grid.SortConstraint;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 @SuppressWarnings("all")
 public class CollectionGridDataSource implements GridDataSource
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
index c1a02b0..257e81d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.internal.model;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 import org.apache.tapestry5.model.*;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java
index ef0f132..8b86d6f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java
@@ -18,9 +18,9 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
index 705e1e0..a442f88 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
@@ -12,9 +12,9 @@
 
 package org.apache.tapestry5.internal.pageload;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.parser.TemplateToken;
 import org.apache.tapestry5.internal.parser.TokenType;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.runtime.RenderCommand;
 
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
index a5627d3..afb9a6f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
@@ -16,10 +16,10 @@ package org.apache.tapestry5.internal.pageload;
 
 import java.util.Map;
 
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
index dcfcb03..4d17b20 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
@@ -13,17 +13,17 @@
 package org.apache.tapestry5.internal.pageload;
 
 import org.apache.tapestry5.Binding;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
 import org.apache.tapestry5.internal.services.Instantiator;
 import org.apache.tapestry5.internal.structure.*;
 import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/DefaultComponentResourceLocator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/DefaultComponentResourceLocator.java
index e61c510..72db3c4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/DefaultComponentResourceLocator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/DefaultComponentResourceLocator.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.internal.pageload;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.util.LocalizedNameGenerator;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.pageload.ComponentResourceLocator;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
index 376596b..4ee971c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
@@ -12,8 +12,8 @@
 
 package org.apache.tapestry5.internal.pageload;
 
+import org.apache.tapestry5.commons.Locatable;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.ioc.Locatable;
 
 import java.util.Set;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
index 6ba330f..edd8e23 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
@@ -12,15 +12,15 @@
 
 package org.apache.tapestry5.internal.pageload;
 
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
 import org.apache.tapestry5.internal.services.Instantiator;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.services.ComponentClassResolver;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
index 052868f..b477190 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.internal.pageload;
 
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.internal.structure.BodyPageElement;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.Stack;
 import org.apache.tapestry5.runtime.RenderCommand;
 
 import java.util.List;
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 2d013a0..7f8ab4e 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
@@ -18,6 +18,14 @@ 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.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.bindings.LiteralBinding;
@@ -28,19 +36,12 @@ 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;
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.runtime.RenderCommand;
@@ -49,7 +50,6 @@ 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;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PagePreloaderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PagePreloaderImpl.java
index d7b8a39..586ce00 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PagePreloaderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PagePreloaderImpl.java
@@ -13,11 +13,11 @@
 package org.apache.tapestry5.internal.pageload;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.ComponentSource;
 import org.apache.tapestry5.services.LocalizationSetter;
 import org.apache.tapestry5.services.pageload.PagePreloader;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java
index 28d037f..8a91fb9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java
index 8a33c77..c7971f2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * A block, used to enclose a chunk of template (including components) and control when or if the content is rendered.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java
index b851dcb..b42ec5c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Placeholder for a component's body (within the component's template).
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java
index 8d980d1..26960c9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java
index 98cf52b..145018c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java
index 704da05..02c5818 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java
@@ -12,12 +12,12 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-
 import java.util.List;
 import java.util.Map;
 
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+
 /**
  * A parsed component template, containing all the tokens parsed from the template.
  */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java
index 318da4c..e161654 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java
@@ -12,16 +12,16 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
+
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
 public class ComponentTemplateImpl implements ComponentTemplate
 {
     private final Resource resource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java
index cfbe93b..684787d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java
index 7a1963f..c301ccc 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java
index e3e0931..6aedd12 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Ends a previously started element (including components, parameters, blocks, etc.).
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java
index 64bdd74..9bf3ce9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * A token containing an expression expansion from the template. Expression expansions look like Ant variables, i.e.,
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java
index a033397..59de0c7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * A token that represents the replacement of a portion of the template with the content of an extension point, or an
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java
index 6161ae0..b1a7dd5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * A parameter block to be passed to a component as a parameter.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java
index 35fc40f..5aec897 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.parser;
 
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * The start element of a component within the template. Will be followed by a series of {@link
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java
index ee2a986..79af45c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java
index 09aa078..5e9208c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.parser;
 
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
 
 /**
  * Base class for tokens parsed out of a template. The set of classes rooted here are effectively object encapsulations
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java
index 6b555db..4838ad8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.parser;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java
index 9ea5889..0dd3bdb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.renderers;
 
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.util.AvailableValues;
+import org.apache.tapestry5.commons.util.AvailableValues;
 import org.apache.tapestry5.services.ObjectRenderer;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java
index 0d7c259..8d07a8b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.renderers;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.services.ObjectRenderer;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java
index 5d260ba..19953aa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java
@@ -15,12 +15,12 @@
 package org.apache.tapestry5.internal.renderers;
 
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
 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.ObjectRenderer;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
index b7b441d..a03bd7a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.renderers;
 
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.Primary;
 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.Context;
 import org.apache.tapestry5.services.ObjectRenderer;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAssetFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAssetFactory.java
index 8d76ad5..1e1f263 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAssetFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAssetFactory.java
@@ -17,10 +17,10 @@ package org.apache.tapestry5.internal.services;
 import java.io.IOException;
 
 import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.AssetFactory;
 import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
 import org.apache.tapestry5.services.assets.AssetPathConstructor;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java
index 895707d..5c0141d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
index 4862ebd..2f8e3ec 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
@@ -17,11 +17,11 @@ package org.apache.tapestry5.internal.services;
 import java.io.IOException;
 
 import org.apache.tapestry5.TrackableComponentEventCallback;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.Ajax;
 import org.apache.tapestry5.services.ComponentEventRequestHandler;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java
index 97b6859..c32a786 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.LockSupport;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.*;
+import org.apache.tapestry5.commons.internal.util.LockSupport;
+import org.apache.tapestry5.commons.services.InvalidationListener;
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.InvalidationListener;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
 
 import java.util.Locale;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java
index 631f5af..4e3f169 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java
@@ -14,11 +14,11 @@
 
 package org.apache.tapestry5.internal.services;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newConcurrentMap;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newConcurrentMap;
 
 import java.util.Map;
 
-import org.apache.tapestry5.ioc.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.services.ApplicationStateContribution;
 import org.apache.tapestry5.services.ApplicationStateCreator;
 import org.apache.tapestry5.services.ApplicationStateManager;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java
index 545fdd2..c40a346 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.AbstractEventContext;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 /**
  * Simple implementation of {@link org.apache.tapestry5.EventContext}.
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 bc893d6..90387f2 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
@@ -16,10 +16,10 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.AssetRequestDispatcher;
 import org.apache.tapestry5.services.ClasspathAssetAliasManager;
 import org.apache.tapestry5.services.Dispatcher;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java
index d429da0..a5e5941 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.ioc.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.ComputedValue;
 import org.apache.tapestry5.plastic.InstanceContext;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java
index e8d22f7..58245b7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java
@@ -16,12 +16,12 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectProvider;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.ioc.services.Builtin;
 import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.Core;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java
index 190c055..b54fd7d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java
@@ -14,19 +14,19 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.internal.util.LockSupport;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.StrategyRegistry;
 import org.apache.tapestry5.internal.AssetConstants;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.LockSupport;
 import org.apache.tapestry5.ioc.services.SymbolSource;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
 import org.apache.tapestry5.services.AssetFactory;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.Request;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java
index e1df8cb..bf93963 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Binding;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.internal.bindings.AbstractBinding;
-import org.apache.tapestry5.ioc.Location;
 
 /**
  * Wraps a {@link StringProvider} as a read-only {@link Binding}.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java
index 343597a..2f4c1ec 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Block;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.BeanBlockContribution;
 import org.apache.tapestry5.services.BeanBlockOverrideSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java
index d0e4867..a2bf54c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java
@@ -16,10 +16,11 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.BindingFactory;
 import org.apache.tapestry5.services.BindingSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java
index fc468c0..9ea86dc 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java
@@ -15,8 +15,8 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Id;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.internal.transform.ReadOnlyComponentFieldConduit;
-import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.model.MutableComponentModel;
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 1841ab4..5d19908 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
@@ -16,12 +16,12 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.util.TimeInterval;
 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.Request;
 import org.apache.tapestry5.services.RequestFilter;
 import org.apache.tapestry5.services.RequestHandler;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
index 6b6f1e2..df84807 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.services.AssetAlias;
 import org.apache.tapestry5.services.ClasspathAssetAliasManager;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
index 21cd9e4..7dccc3e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.Marker;
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
 import org.apache.tapestry5.services.AssetAlias;
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 120939e..fb5d221 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
@@ -14,9 +14,9 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.ClientDataEncoder;
 import org.apache.tapestry5.services.ClientDataSink;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClusteredSessionImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClusteredSessionImpl.java
index 3dccb17..8fd2ad7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClusteredSessionImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClusteredSessionImpl.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
index 7ea0bf0..f5c4525 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
@@ -15,10 +15,10 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.transform.ReadOnlyComponentFieldConduit;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.ComputedValue;
 import org.apache.tapestry5.plastic.InstanceContext;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java
index 37d5428..c51a43e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java
@@ -14,15 +14,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.services.InvalidationListener;
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ComponentClasses;
 import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.InvalidationListener;
 
 import java.util.Map;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
index e4c7a3a..8ba9c0a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
@@ -13,16 +13,16 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.services.InvalidationListener;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.internal.InternalConstants;
 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.ioc.services.ClassNameLocator;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.InvalidationListener;
 import org.apache.tapestry5.services.LibraryMapping;
 import org.apache.tapestry5.services.transform.ControlledPackageType;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java
index 71c86a4..27394a8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java
@@ -22,11 +22,11 @@ import org.apache.tapestry5.FieldValidator;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.services.PropertyAccess;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.bindings.InvariantBinding;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.BindingSource;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
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 1259bca..34abeab 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
@@ -16,10 +16,10 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.BaseURLSource;
 import org.apache.tapestry5.services.ComponentClassResolver;
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 13c5266..e194e09 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
@@ -14,10 +14,10 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.TrackableComponentEventCallback;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 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.ComponentEventRequestHandler;
 import org.apache.tapestry5.services.ComponentEventRequestParameters;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java
index e7b9df6..ed7a40f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java
@@ -12,15 +12,15 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
 import org.apache.tapestry5.services.transform.ControlledPackageType;
 
 /**
  * Creates {@link org.apache.tapestry5.internal.services.Instantiator}s for components, based on component class name.
  * This will involve transforming the component's class before it is loaded.
  *
- * In addition, a source acts as an event hub for {@link org.apache.tapestry5.services.InvalidationListener}s, so that
+ * In addition, a source acts as an event hub for {@link org.apache.tapestry5.commons.services.InvalidationListener}s, so that
  * any information derived from loaded classes can be discarded and rebuilt when classes change.
  *
  * The strategy used is that when <em>any</em> class (in a controlled package) changes, the entire class loader is
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 5114fed..76f7752 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
@@ -22,18 +22,18 @@ import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.LoggerSource;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
 import org.apache.tapestry5.ioc.services.Builtin;
 import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.*;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java
index 8f0fa00..f7732c1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java
@@ -15,14 +15,14 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
 import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
 import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.UpdateListener;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
 import org.apache.tapestry5.services.messages.PropertiesFileParser;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java
index ed57a9d..48666ca 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java
@@ -12,9 +12,9 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
 import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
index 04f8b80..61f37bb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
@@ -14,20 +14,20 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.MultiKey;
 import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
 import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.util.MultiKey;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
 import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
 import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.UpdateListener;
 import org.apache.tapestry5.services.UpdateListenerHub;
 import org.apache.tapestry5.services.pageload.ComponentResourceLocator;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java
index 4731cdf..3b44454 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.AssetFactory;
 import org.apache.tapestry5.services.Context;
 import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java
index 922086f..2b10d22 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.Stack;
 import org.apache.tapestry5.services.Context;
 
 import javax.servlet.ServletContext;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java
index 9974d66..60ab0eb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java
@@ -15,11 +15,11 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.URLEventContext;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ContextPathEncoder;
 import org.apache.tapestry5.services.ContextValueEncoder;
 import org.apache.tapestry5.services.URLEncoder;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java
index 26f22a4..0ff3223 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.internal.util.AbstractResource;
 import org.apache.tapestry5.services.Context;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java
index e9bfd0b..58e18b2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java
@@ -18,9 +18,9 @@ import javax.servlet.http.Cookie;
 
 import org.apache.tapestry5.CookieBuilder;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.TimeInterval;
 import org.apache.tapestry5.ioc.annotations.IntermediateType;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.util.TimeInterval;
 import org.apache.tapestry5.services.Cookies;
 import org.apache.tapestry5.services.Request;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java
index b40e23e..cf4bea6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.ioc.services.MasterObjectProvider;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.PlasticField;
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 896a546..ee85b08 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
@@ -17,13 +17,13 @@ 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.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.ServiceResources;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.OperationException;
-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.ComponentClassResolver;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java
index 56ad354..fc04498 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java
@@ -12,9 +12,9 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Document;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.services.javascript.InitializationPriority;
 import org.apache.tapestry5.services.javascript.ModuleConfigurationCallback;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java
index c80c32e..e0cf073 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.events.EndOfRequestListener;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.RequestGlobals;
 
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java
index 44c9e2c..a563e45 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.services.ValueEncoderFactory;
 import org.apache.tapestry5.util.EnumValueEncoder;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueLabelProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueLabelProvider.java
index ff64ae6..2707184 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueLabelProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueLabelProvider.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.services.ValueLabelProvider;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
index 5af8575..87ddb7a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
@@ -14,13 +14,13 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.services.Environment;
 
 import java.util.LinkedList;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java
index c3a7b5c..a38cf22 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.internal.services;
 
 import java.lang.reflect.Method;
 
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
 import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
 import org.apache.tapestry5.plastic.ClassInstantiator;
 import org.apache.tapestry5.plastic.MethodAdvice;
 import org.apache.tapestry5.plastic.MethodInvocation;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ExternalUrlAssetFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ExternalUrlAssetFactory.java
index 738984e..8bd6872 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ExternalUrlAssetFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ExternalUrlAssetFactory.java
@@ -18,9 +18,9 @@ import java.net.URL;
 import java.util.Map;
 
 import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.AssetConstants;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.AssetFactory;
 
 public class ExternalUrlAssetFactory implements AssetFactory {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java
index 710952c..7f5f535 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 
 public class FieldTranslatorImpl<T> implements FieldTranslator<T>
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
index ec7e803..4156178 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
@@ -21,9 +21,9 @@ import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldTranslator;
 import org.apache.tapestry5.Translator;
 import org.apache.tapestry5.beaneditor.Translate;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.MessageFormatter;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.FieldTranslatorSource;
 import org.apache.tapestry5.services.FormSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java
index 52697bf..2e5f126 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java
@@ -15,11 +15,11 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 
 @SuppressWarnings("all")
 public class FieldValidationSupportImpl implements FieldValidationSupport
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java
index 90acb76..467e5d6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java
@@ -17,15 +17,16 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldValidator;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.internal.beaneditor.EnvironmentMessages;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
 import org.apache.tapestry5.services.FieldValidatorDefaultSource;
 import org.apache.tapestry5.services.FieldValidatorSource;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 import org.apache.tapestry5.services.Environment;
 
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
+
 import java.util.List;
 import java.util.Locale;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java
index eb6ea27..7facb6f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.*;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 
 public class FieldValidatorImpl implements FieldValidator
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java
index c8d978e..e9099bd 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java
@@ -18,22 +18,22 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldValidator;
 import org.apache.tapestry5.Validator;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.MessageFormatter;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.FieldValidatorSource;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.validator.ValidatorMacro;
 
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
+
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
 @SuppressWarnings("all")
 public class FieldValidatorSourceImpl implements FieldValidatorSource
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FormControlNameManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FormControlNameManagerImpl.java
index fc5365d..13854ee 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FormControlNameManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FormControlNameManagerImpl.java
@@ -14,10 +14,10 @@ package org.apache.tapestry5.internal.services;
 import java.util.Collections;
 import java.util.Set;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.InternalSymbols;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 public class FormControlNameManagerImpl implements FormControlNameManager
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java
index 19b4df5..e27e001 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry5.internal.services;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newStack;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newStack;
 
 import java.util.List;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.services.Heartbeat;
 
 public class HeartbeatImpl implements Heartbeat
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalComponentInvalidationEventHub.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalComponentInvalidationEventHub.java
index 7011043..d5bde05 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalComponentInvalidationEventHub.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalComponentInvalidationEventHub.java
@@ -13,9 +13,9 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.services.InvalidationListener;
 import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.InvalidationListener;
 
 /**
  * Split-out implementation of {@link InvalidationEventHub} that separates it from {@link ComponentInstantiatorSource}.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java
index f848b39..eb485ed 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java
@@ -17,11 +17,11 @@ package org.apache.tapestry5.internal.services;
 import java.util.List;
 
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.ComponentEventLinkEncoder;
 import org.apache.tapestry5.services.ComponentEventRequestParameters;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java
index 44444ab..6cabf69 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java
@@ -23,11 +23,11 @@ import java.util.Set;
 import org.apache.tapestry5.OptionModel;
 import org.apache.tapestry5.SelectModel;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.OptionModelImpl;
 import org.apache.tapestry5.internal.SelectModelImpl;
 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.services.ThreadLocale;
 import org.apache.tapestry5.services.LocalizationSetter;
 import org.apache.tapestry5.services.PersistentLocale;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java
index b3c0221..383d566 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java
@@ -14,18 +14,13 @@
 
 package org.apache.tapestry5.internal.services;
 
-/**
- * An implementation  of {@link Messages} that is based on a map.
- *
- */
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.util.AbstractMessages;
-
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.util.AbstractMessages;
+
 /**
  * Implementation of {@link Messages} based on a simple Map (of string keys and values).
  */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java
index 8200448..2eb151e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
 
 /**
  * Represents a bundle of properties files that can be used to collect properties that are eventually used to form a
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java
index b61e448..749aacb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
 import org.apache.tapestry5.services.UpdateListener;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java
index 4583705..adeddc1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java
@@ -12,14 +12,14 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CaseInsensitiveMap;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.MultiKey;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
-import org.apache.tapestry5.internal.util.MultiKey;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.util.CaseInsensitiveMap;
 import org.apache.tapestry5.services.messages.PropertiesFileParser;
 import org.apache.tapestry5.services.pageload.ComponentResourceLocator;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java
index 2ecf76e..cd76830 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java
@@ -15,12 +15,12 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ComponentClasses;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.MetaDataLocator;
 
 import java.util.Map;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
index 829c539..a87e16a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ModuleInitsManager.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.services.javascript.InitializationPriority;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java
index edc2e3b..7ad7872 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.services.NullFieldStrategySource;
 
 import java.util.Map;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
index a42f2f1..e214f6e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
-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.ComponentEventResultProcessor;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java
index ba6abd9..7b87ec9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java
@@ -16,16 +16,16 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ComponentEventCallback;
 import org.apache.tapestry5.EventConstants;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.services.InvalidationListener;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.structure.ComponentPageElement;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.internal.util.Holder;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.ComponentClasses;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.InvalidationListener;
 
 import java.util.Map;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java
index cfde638..b7da29c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.internal.parser.AttributeToken;
 import org.apache.tapestry5.internal.parser.ExpansionToken;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.services.BindingSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
index 06aff8f..333527b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
@@ -18,20 +18,20 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.parser.AttributeToken;
 import org.apache.tapestry5.internal.parser.ExpansionToken;
 import org.apache.tapestry5.internal.structure.ExpansionPageElement;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 import org.apache.tapestry5.services.BindingSource;
 
-import java.util.List;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+import java.util.List;
 
 public class PageElementFactoryImpl implements PageElementFactory
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java
index a61e15c..7131dc0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java
@@ -13,12 +13,12 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.LoggerSource;
 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.util.Stack;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.services.PartialMarkupRenderer;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java
index 7c1a4e1..e09ee08 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.dynamic.DynamicTemplate;
 import org.apache.tapestry5.services.pageload.ComponentRequestSelectorAnalyzer;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
index 09afc4f..6a4eeb0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
@@ -14,16 +14,16 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 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.pageload.ComponentRequestSelectorAnalyzer;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialTemplateRendererImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialTemplateRendererImpl.java
index 4a8f62f..191791b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialTemplateRendererImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialTemplateRendererImpl.java
@@ -14,8 +14,8 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.services.PartialTemplateRenderer;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java
index f2b18c1..341ab03 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.services.PersistentFieldBundle;
 import org.apache.tapestry5.services.PersistentFieldChange;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java
index 66b002f..8a2459b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java
@@ -19,10 +19,10 @@ import java.util.Map;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.MetaDataLocator;
 import org.apache.tapestry5.services.PersistentFieldBundle;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
index c8f9189..80c7b71 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
@@ -18,9 +18,9 @@ import java.util.Locale;
 import java.util.Set;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.services.PerThreadValue;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.services.PersistentLocale;
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 7c045d7..34f631e 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
@@ -13,9 +13,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 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.ComponentEventRequestParameters;
 import org.apache.tapestry5.services.ComponentRequestFilter;
 import org.apache.tapestry5.services.ComponentRequestHandler;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyValueLabelProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyValueLabelProvider.java
index f296d25..25bfc35 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyValueLabelProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyValueLabelProvider.java
@@ -15,9 +15,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
+import org.apache.tapestry5.commons.services.ClassPropertyAdapter;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
 import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.ValueLabelProvider;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ReloadHelperImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ReloadHelperImpl.java
index d2c669d..923a047 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ReloadHelperImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ReloadHelperImpl.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.alerts.AlertManager;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java
index 71fa8e5..2f57c3a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 
 /**
  * Exception used when rendering, to capture the stack of active components (for propery reporting in the exception
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
index e696d82..09b9128 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
@@ -17,9 +17,9 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.TapestryMarkers;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-import org.apache.tapestry5.ioc.util.Stack;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java
index 5493675..ba3b288 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java
@@ -14,14 +14,14 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.ScopeConstants;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.RequestGlobals;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManager.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManager.java
index 62b797b..13dc669 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManager.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManager.java
@@ -12,8 +12,8 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
 import org.apache.tapestry5.services.ResourceDigestGenerator;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManagerImpl.java
index 6812d9d..11aa54c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestManagerImpl.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.InvalidationListener;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationListener;
 
 import java.util.Map;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java
index f28e9b1..408901b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.assets.StreamableResource;
 import org.apache.tapestry5.services.assets.StreamableResourceSource;
 
@@ -35,7 +35,7 @@ import java.util.Set;
 public interface ResourceStreamer
 {
     /**
-     * Used to customize the behavior of {@link #streamResource(org.apache.tapestry5.ioc.Resource, java.lang.String, java.util.Set)}.
+     * Used to customize the behavior of {@link #streamResource(org.apache.tapestry5.commons.Resource, java.lang.String, java.util.Set)}.
      *
      * @since 5.4
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
index f939dff..fa6b6a3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
@@ -14,11 +14,11 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.InjectService;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.services.AssetFactory;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java
index 62f84d6..c403546 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java
@@ -12,13 +12,13 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.parser.*;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 
 import javax.xml.namespace.QName;
 import java.net.URL;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java
index c5c1aee..459055f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java
@@ -15,10 +15,10 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.OptionModel;
 import org.apache.tapestry5.SelectModel;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.OptionModelImpl;
 import org.apache.tapestry5.internal.SelectModelImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
 import org.apache.tapestry5.services.SelectModelFactory;
 import org.apache.tapestry5.services.ValueEncoderSource;
 import org.apache.tapestry5.services.ValueLabelProvider;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java
index da0b26f..a5078b4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java
@@ -15,9 +15,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.annotations.Service;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectProvider;
 
 /**
  * Adds support for the {@link Service} annotation (which can be applied to fields or parameters), which is used to
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java
index cc145d1..05c6ad8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.PlasticField;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java
index 7829285..3b7fc5e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.services.Session;
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 b0ffbee..141c5c1 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
@@ -17,10 +17,10 @@ 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.commons.services.TypeCoercer;
 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.ComponentClassResolver;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
 import org.apache.tapestry5.services.PageRenderRequestHandler;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java
index 7b3e5e2..771cd86 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
 import java.net.URL;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java
index 65d323d..0a91ecb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java
@@ -15,10 +15,10 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
 import org.apache.tapestry5.ioc.Invokable;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 
 import java.net.URL;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java
index d88a10a..b78d451 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java
@@ -15,15 +15,15 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Translator;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.StrategyRegistry;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.plastic.PlasticUtils;
 import org.apache.tapestry5.services.ComponentClasses;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.TranslatorSource;
 
 import java.util.Collections;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java
index 9d67d87..a4bfb02 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java
@@ -13,13 +13,13 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ValueEncoderFactory;
 
 /**
  * Provides {@link org.apache.tapestry5.ValueEncoder} instances that are backed by the {@link
- * org.apache.tapestry5.ioc.services.TypeCoercer} service.
+ * org.apache.tapestry5.commons.services.TypeCoercer} service.
  */
 public class TypeCoercedValueEncoderFactory implements ValueEncoderFactory<Object>
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlAsset.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlAsset.java
index 1441af8..6f7e215 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlAsset.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlAsset.java
@@ -13,7 +13,7 @@
 // limitations under the License.
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 
 public class UrlAsset extends AbstractAsset
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlResource.java
index d897f4a..b3b71d6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/UrlResource.java
@@ -19,8 +19,8 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.Locale;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.util.VirtualResource;
-import org.apache.tapestry5.ioc.Resource;
 
 public class UrlResource extends VirtualResource {
     
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java
index 45ef9bb..dff7b22 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.internal.services;
 
 import java.util.List;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.services.ValidationConstraintGenerator;
 
 @SuppressWarnings("all")
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 d367409..16e02d5 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
@@ -18,11 +18,11 @@ import java.util.Map;
 
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.StrategyRegistry;
 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.ComponentClasses;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.ValueEncoderFactory;
 import org.apache.tapestry5.services.ValueEncoderSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java
index 8a94915..01807ac 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.internal.services;
 
 import java.util.List;
 
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
 
 /**
  * A token parsed from an XML file, used when parsing templates.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java
index 10f7f59..a4ae27f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.internal.util.LocationImpl;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.xml.sax.*;
 import org.xml.sax.ext.Attributes2;
 import org.xml.sax.ext.LexicalHandler;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java
index 6fa41cb..df74e0c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxResponseRendererImpl.java
@@ -13,13 +13,13 @@ package org.apache.tapestry5.internal.services.ajax;
 
 import org.apache.tapestry5.ClientBodyElement;
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.PageRenderQueue;
 import org.apache.tapestry5.internal.services.PageSource;
 import org.apache.tapestry5.internal.services.RequestPageCache;
 import org.apache.tapestry5.internal.structure.Page;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.services.PartialMarkupRenderer;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
index cc3a155..3a98ac7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
@@ -16,12 +16,12 @@ import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.BooleanHook;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.FieldFocusPriority;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Worker;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.DocumentLinker;
 import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 import org.apache.tapestry5.json.JSONArray;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java
index 69e1998..d2be912 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/MultiZoneUpdateEventResultProcessor.java
@@ -15,9 +15,9 @@
 package org.apache.tapestry5.internal.services.ajax;
 
 import org.apache.tapestry5.ajax.MultiZoneUpdate;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.services.AjaxPartialResponseRenderer;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.services.ComponentEventResultProcessor;
 import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetChecksumGeneratorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetChecksumGeneratorImpl.java
index de433fc..f8b8c88 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetChecksumGeneratorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetChecksumGeneratorImpl.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.services.assets.AssetChecksumGenerator;
 import org.apache.tapestry5.services.assets.StreamableResource;
 import org.apache.tapestry5.services.assets.StreamableResourceProcessing;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
index c578418..1e6484c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/CSSURLRewriter.java
@@ -15,9 +15,9 @@ package org.apache.tapestry5.internal.services.assets;
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.ContentType;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.assets.*;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ChecksumPath.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ChecksumPath.java
index 7e5f95e..097bb7c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ChecksumPath.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ChecksumPath.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.ResourceStreamer;
-import org.apache.tapestry5.ioc.Resource;
 
 import java.io.IOException;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java
index ea92e26..88149fb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.ResourceStreamer;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.AssetSource;
 import org.apache.tapestry5.services.ClasspathAssetAliasManager;
 import org.apache.tapestry5.services.ClasspathAssetProtectionRule;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContentTypeAnalyzerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContentTypeAnalyzerImpl.java
index 8f6c37b..3114584 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContentTypeAnalyzerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContentTypeAnalyzerImpl.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.internal.services.assets;
 
 import java.util.Map;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.Context;
 import org.apache.tapestry5.services.assets.ContentTypeAnalyzer;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java
index 473eded..faab6bb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.ResourceStreamer;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.services.Response;
 import org.apache.tapestry5.services.assets.AssetRequestHandler;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
index 8a18036..04fff07 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/DelegatingSRS.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.assets.ResourceDependencies;
 import org.apache.tapestry5.services.assets.StreamableResource;
 import org.apache.tapestry5.services.assets.StreamableResourceProcessing;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
index cee61c8..bdc79f0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackAssemblerImpl.java
@@ -15,9 +15,9 @@ package org.apache.tapestry5.internal.services.assets;
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.ContentType;
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
 import org.apache.tapestry5.services.assets.*;
 import org.apache.tapestry5.services.javascript.JavaScriptStack;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackMinimizeDisabler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackMinimizeDisabler.java
index 03d7205..e228727 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackMinimizeDisabler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/JavaScriptStackMinimizeDisabler.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.services.assets.ResourceDependencies;
 import org.apache.tapestry5.services.assets.StreamableResource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTracker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTracker.java
index 8e4de90..f47498e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTracker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTracker.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.services.InvalidationListener;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.InvalidationListener;
 import org.apache.tapestry5.services.UpdateListener;
 import org.apache.tapestry5.services.assets.ResourceDependencies;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTrackerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTrackerImpl.java
index 05ab3db..35d1223 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTrackerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ResourceChangeTrackerImpl.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCachingInterceptor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCachingInterceptor.java
index b4cc161..1c53eb9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCachingInterceptor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCachingInterceptor.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.assets.ResourceDependencies;
 import org.apache.tapestry5.services.assets.StreamableResource;
 import org.apache.tapestry5.services.assets.StreamableResourceProcessing;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCompressingInterceptor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCompressingInterceptor.java
index f772930..f6f1eee 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCompressingInterceptor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSCompressingInterceptor.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.assets.*;
 
 import java.io.IOException;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSMinimizingInterceptor.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSMinimizingInterceptor.java
index 63edbab..93bb574 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSMinimizingInterceptor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/SRSMinimizingInterceptor.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.internal.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.assets.*;
 
 import java.io.IOException;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
index 37cfd2d..8351429 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StreamableResourceSourceImpl.java
@@ -13,9 +13,9 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import org.apache.tapestry5.ContentType;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.assets.*;
 
 import java.io.ByteArrayOutputStream;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
index 6b315bd..0f637d7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/UTF8ForTextAssets.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.internal.services.assets;
 
 import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.assets.ResourceDependencies;
 import org.apache.tapestry5.services.assets.StreamableResource;
 import org.apache.tapestry5.services.assets.StreamableResourceProcessing;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/compatibility/DeprecationWarningImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/compatibility/DeprecationWarningImpl.java
index c8a3228..c1cb4c0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/compatibility/DeprecationWarningImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/compatibility/DeprecationWarningImpl.java
@@ -16,12 +16,12 @@ package org.apache.tapestry5.internal.services.compatibility;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.alerts.AlertManager;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 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.compatibility.DeprecationWarning;
 import org.slf4j.Logger;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/dashboard/DashboardManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/dashboard/DashboardManagerImpl.java
index 9b6413f..619947a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/dashboard/DashboardManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/dashboard/DashboardManagerImpl.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.services.dashboard;
 
 import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.ComponentSource;
 import org.apache.tapestry5.services.dashboard.DashboardManager;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReportWriterImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReportWriterImpl.java
index 439dfdd..f5c4d37 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReportWriterImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReportWriterImpl.java
@@ -13,6 +13,7 @@
 package org.apache.tapestry5.internal.services.exceptions;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.func.Mapper;
@@ -20,7 +21,6 @@ import org.apache.tapestry5.func.Reducer;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
 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.ioc.services.ExceptionAnalysis;
 import org.apache.tapestry5.ioc.services.ExceptionAnalyzer;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
index 51d0fcb..00bc4bf 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
@@ -13,10 +13,10 @@
 package org.apache.tapestry5.internal.services.exceptions;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.ioc.annotations.Symbol;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.ExceptionReportWriter;
 import org.apache.tapestry5.services.ExceptionReporter;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java
index 9bb3342..0d1acb2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java
@@ -14,14 +14,14 @@ package org.apache.tapestry5.internal.services.javascript;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.internal.services.assets.JavaScriptStackAssembler;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
 import org.apache.tapestry5.services.assets.AssetPathConstructor;
 import org.apache.tapestry5.services.assets.StreamableResource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
index 702929f..c11d721 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
@@ -13,10 +13,10 @@
 package org.apache.tapestry5.internal.services.javascript;
 
 import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.services.javascript.JavaScriptStack;
 import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleDispatcher.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleDispatcher.java
index 50a19b8..1923565 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleDispatcher.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleDispatcher.java
@@ -13,14 +13,14 @@
 package org.apache.tapestry5.internal.services.javascript;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.AssetDispatcher;
 import org.apache.tapestry5.internal.services.RequestConstants;
 import org.apache.tapestry5.internal.services.ResourceStreamer;
 import org.apache.tapestry5.ioc.IOOperation;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.Dispatcher;
 import org.apache.tapestry5.services.LocalizationSetter;
 import org.apache.tapestry5.services.PathConstructor;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
index 21de19b..2e28a6b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/ModuleManagerImpl.java
@@ -13,14 +13,14 @@
 package org.apache.tapestry5.internal.services.javascript;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.PostInjection;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONLiteral;
 import org.apache.tapestry5.json.JSONObject;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/ClientLocalizationMessageResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/ClientLocalizationMessageResource.java
index 6058997..f4da46a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/ClientLocalizationMessageResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/ClientLocalizationMessageResource.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.internal.services.messages;
 
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.util.VirtualResource;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.io.IOException;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java
index 581a1dd..ab84502 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java
@@ -22,8 +22,8 @@ import java.io.Reader;
 import java.util.Map;
 import java.util.Properties;
 
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.messages.PropertiesFileParser;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
index 97d4baf..dd2c7ee 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.internal.services.templates;
 import java.util.Locale;
 
 import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java
index 6f4d427..7f1656a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.internal.services.templates;
 
 import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.ComponentClassResolver;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java
index 5caa9b2..6f234a8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
index 83a6d50..0152e40 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
@@ -16,10 +16,10 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.ComponentResourcesCommon;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.InternalComponentResourcesCommon;
 import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.ComponentEvent;
 import org.apache.tapestry5.runtime.RenderCommand;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
index 8fc51ba..d9628e1 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
@@ -14,6 +14,11 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.*;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.dom.Element;
 import org.apache.tapestry5.internal.AbstractEventContext;
 import org.apache.tapestry5.internal.InternalComponentResources;
@@ -24,14 +29,9 @@ import org.apache.tapestry5.internal.util.NamedSet;
 import org.apache.tapestry5.internal.util.NotificationEventCallback;
 import org.apache.tapestry5.ioc.BaseLocatable;
 import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.internal.util.Orderer;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.ParameterModel;
 import org.apache.tapestry5.runtime.Component;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java
index 6a32e86..dc4f634 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.services.PerThreadValue;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
@@ -39,7 +39,7 @@ public interface ComponentPageElementResources extends ContextValueEncoder, Oper
     ComponentResourceSelector getSelector();
 
     /**
-     * Used to obtain a {@link org.apache.tapestry5.ioc.Messages} instance for a particular component. If the component
+     * Used to obtain a {@link org.apache.tapestry5.commons.Messages} instance for a particular component. If the component
      * extends from another component, then its localized properties will merge with its parent's properties (with the
      * subclass overriding the super class on any conflicts).
      *
@@ -63,7 +63,7 @@ public interface ComponentPageElementResources extends ContextValueEncoder, Oper
      * @param targetType
      *         defines the target type
      * @return the coerced value
-     * @see org.apache.tapestry5.ioc.services.TypeCoercer
+     * @see org.apache.tapestry5.commons.services.TypeCoercer
      */
     <S, T> T coerce(S input, Class<T> targetType);
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java
index 6c180b9..85543f6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java
@@ -16,14 +16,18 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.commons.*;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.internal.services.LinkSource;
 import org.apache.tapestry5.internal.services.RequestPageCache;
-import org.apache.tapestry5.ioc.*;
+import org.apache.tapestry5.ioc.IOOperation;
+import org.apache.tapestry5.ioc.Invokable;
+import org.apache.tapestry5.ioc.LoggerSource;
+import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.services.PerThreadValue;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.ContextValueEncoder;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java
index f4ee38b..6f03e84 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java
@@ -15,15 +15,15 @@
 package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.internal.services.LinkSource;
 import org.apache.tapestry5.internal.services.RequestPageCache;
 import org.apache.tapestry5.ioc.LoggerSource;
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.ContextValueEncoder;
 import org.apache.tapestry5.services.RequestGlobals;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java
index 282913d..71c4d6c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java
index 886d773..c1ecd07 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java
@@ -13,6 +13,14 @@
 package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.internal.NullAnnotationProvider;
+import org.apache.tapestry5.commons.internal.util.LockSupport;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.Worker;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.bindings.InternalPropBinding;
@@ -20,15 +28,7 @@ import org.apache.tapestry5.internal.bindings.PropBinding;
 import org.apache.tapestry5.internal.services.Instantiator;
 import org.apache.tapestry5.internal.transform.ParameterConduit;
 import org.apache.tapestry5.internal.util.NamedSet;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.NullAnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.LockSupport;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.PerThreadValue;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.runtime.Component;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java
index 80c5d25..2968265 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java
@@ -14,8 +14,8 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.beaneditor.NonVisual;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.PageLifecycleCallbackHub;
 import org.apache.tapestry5.runtime.PageLifecycleListener;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
index 6b9a90f..38fa17f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
@@ -16,12 +16,12 @@ package org.apache.tapestry5.internal.structure;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.MetaDataConstants;
+import org.apache.tapestry5.commons.ObjectCreator;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.internal.services.PersistentFieldManager;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.ObjectCreator;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.runtime.PageLifecycleListener;
 import org.apache.tapestry5.services.MetaDataLocator;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java
index 2be9b44..fa944ed 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.internal.structure;
 import org.apache.tapestry5.ComponentEventCallback;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.runtime.RenderCommand;
 import org.apache.tapestry5.runtime.RenderQueue;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java
index 2c4b6af..48906bc 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.structure;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.MessagesImpl;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
 
 import java.util.Collection;
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
index f604c05..7e92c5b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
@@ -13,11 +13,11 @@
 package org.apache.tapestry5.internal.test;
 
 import org.apache.tapestry5.ContentType;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.internal.services.CookieSink;
 import org.apache.tapestry5.internal.services.CookieSource;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ObjectLocator;
-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.Local;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java
index 5c18eb0..b487f12 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java
@@ -14,11 +14,12 @@
 
 package org.apache.tapestry5.internal.test;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.Session;
 
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
+
 import java.util.List;
 import java.util.Map;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java
index 315353b..d61668e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.internal.test;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.CookieSink;
 import org.apache.tapestry5.internal.services.CookieSource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import javax.servlet.http.Cookie;
 import java.util.Map;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java
index 6c49f35..12c128d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java
@@ -15,9 +15,9 @@
 package org.apache.tapestry5.internal.test;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.Session;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java
index 68ffb6c..64cac5f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java
@@ -27,8 +27,8 @@ import javax.servlet.ServletOutputStream;
 import javax.servlet.http.HttpServletResponse;
 
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 public class TestableResponseImpl implements TestableResponse
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
index 55dfee0..508b4ae 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
@@ -16,8 +16,8 @@ import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.ActivationRequestParameter;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.util.IdAllocator;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.FieldHandle;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java
index f375090..ad9c09f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java
@@ -17,15 +17,15 @@ package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.BindParameter;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.EmbeddedComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
index 36bff98..2ba37b8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
@@ -18,15 +18,15 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.MixinClasses;
 import org.apache.tapestry5.annotations.Mixins;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringLocation;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.KeyValue;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.services.StringLocation;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java
index dbe4703..022385e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.InjectComponent;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.*;
 import org.apache.tapestry5.runtime.Component;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedProvider.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedProvider.java
index e204c0f..a942978 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedProvider.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectNamedProvider.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.transform;
 
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.PlasticField;
 import org.apache.tapestry5.services.transform.InjectionProvider2;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
index 57b0609..dc36b58 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.annotations.InjectPage;
+import org.apache.tapestry5.commons.ObjectCreator;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.ObjectCreator;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.InstanceContext;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java
index 0ac01a5..c4bb6fc 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.transform;
 
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.InjectService;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.PlasticClass;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java
index 85b6b35..94fa5e5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java
@@ -12,12 +12,12 @@
 
 package org.apache.tapestry5.internal.transform;
 
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.ObjectLocator;
 import org.apache.tapestry5.ioc.OperationTracker;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.PlasticClass;
 import org.apache.tapestry5.plastic.PlasticField;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
index fdb2dc9..e53a04f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
@@ -23,6 +23,10 @@ import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.OnEvent;
 import org.apache.tapestry5.annotations.PublishEvent;
 import org.apache.tapestry5.annotations.RequestParameter;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.corelib.mixins.PublishServerSideEvents;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Flow;
@@ -31,11 +35,7 @@ import org.apache.tapestry5.func.Predicate;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.Condition;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
index c01dab2..ee51c52 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
@@ -22,7 +22,7 @@ import java.util.Set;
 
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.annotations.PageActivationContext;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.FieldHandle;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java
index 336d074..b54c1ba 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java
@@ -14,8 +14,8 @@ package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.plastic.FieldConduit;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
index 1a2b6a8..d719cf5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
@@ -16,6 +16,9 @@ package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.annotations.Parameter;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.func.Predicate;
@@ -23,11 +26,8 @@ import org.apache.tapestry5.internal.InternalComponentResources;
 import org.apache.tapestry5.internal.bindings.LiteralBinding;
 import org.apache.tapestry5.internal.services.ComponentClassCache;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.ioc.services.PerThreadValue;
 import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.*;
 import org.apache.tapestry5.services.BindingSource;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
index 0c4d128..5f1bb78 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
@@ -16,10 +16,10 @@ package org.apache.tapestry5.internal.transform;
 
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.annotations.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.*;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java
index 08f34fb..2ba6a1b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.translator;
 
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
 
 import java.math.BigDecimal;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MacOutputStream.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MacOutputStream.java
index 71c110d..9e47dc9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MacOutputStream.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MacOutputStream.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.internal.util;
 
 import org.apache.commons.codec.binary.Base64;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
+import org.apache.tapestry5.commons.util.ExceptionUtils;
 
 import javax.crypto.Mac;
 import java.io.IOException;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
index 6c41fda..ef89f8c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MessageCatalogResource.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.util;
 
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.internal.services.assets.ResourceChangeTracker;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.services.messages.ComponentMessagesSource;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java
index 35b7637..e2e9f2c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NamedSet.java
@@ -12,12 +12,12 @@
 
 package org.apache.tapestry5.internal.util;
 
+import org.apache.tapestry5.commons.internal.util.LockSupport;
+import org.apache.tapestry5.commons.util.CaseInsensitiveMap;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Worker;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.LockSupport;
-import org.apache.tapestry5.ioc.util.CaseInsensitiveMap;
 
 import java.util.Collection;
 import java.util.Collections;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RecomputableSupport.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RecomputableSupport.java
index e1f01d2..18ff46c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RecomputableSupport.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RecomputableSupport.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.util;
 
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
 import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.services.InvalidationEventHub;
 
 /**
  * A utility class for managing a cacheable result that can be recomputed when needed.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
index e9548b4..2770da0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/VirtualResource.java
@@ -12,8 +12,6 @@
 
 package org.apache.tapestry5.internal.util;
 
-import org.apache.tapestry5.ioc.Resource;
-
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -21,10 +19,12 @@ import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.Locale;
 
+import org.apache.tapestry5.commons.Resource;
+
 /**
  * Base class for virtual resources: resources that are not simply mapped to stored files, but are assembled, as necessary,
  * on the fly. This is used inside Tapestry to expose the application's localized message catalog as a module.
- * Subclasses should implement the {@link org.apache.tapestry5.ioc.Resource#openStream()} method to return a stream of
+ * Subclasses should implement the {@link org.apache.tapestry5.commons.Resource#openStream()} method to return a stream of
  * the contents of the virtual resource.
  *
  * @see org.apache.tapestry5.services.javascript.ModuleManager
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
index 1133723..8d77295 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
@@ -14,7 +14,7 @@ package org.apache.tapestry5.model;
 
 import org.apache.tapestry5.EventConstants;
 import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.LibraryMapping;
 import org.slf4j.Logger;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java
index 31c496e..2f41af6 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.model;
 
 import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.ioc.Locatable;
+import org.apache.tapestry5.commons.Locatable;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
index 623a6df..bc0b57e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
@@ -14,8 +14,8 @@ package org.apache.tapestry5.model;
 
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.ioc.Location;
 
 /**
  * Mutable version of {@link org.apache.tapestry5.model.ComponentModel} used during the transformation phase.
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 60131cb..dd85c9b 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
@@ -18,6 +18,7 @@ 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.commons.*;
 import org.apache.tapestry5.internal.AssetConstants;
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.internal.services.AssetSourceImpl;
@@ -30,7 +31,8 @@ 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.*;
+import org.apache.tapestry5.ioc.OperationTracker;
+import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.*;
 import org.apache.tapestry5.ioc.services.ChainBuilder;
 import org.apache.tapestry5.ioc.services.FactoryDefaults;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/Bootstrap4Module.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/Bootstrap4Module.java
index ffa6e76..e384c72 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/Bootstrap4Module.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/Bootstrap4Module.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.modules;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 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/modules/DashboardModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/DashboardModule.java
index 9eccdc1..002fea7 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/DashboardModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/DashboardModule.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.modules;
 
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.internal.services.dashboard.DashboardManagerImpl;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.services.dashboard.DashboardManager;
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 cdb7441..8fa7b7d 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
@@ -14,6 +14,8 @@ package org.apache.tapestry5.modules;
 
 import org.apache.tapestry5.beanmodel.internal.services.*;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.internal.pageload.PageLoaderImpl;
 import org.apache.tapestry5.internal.services.AjaxPartialResponseRenderer;
 import org.apache.tapestry5.internal.services.AjaxPartialResponseRendererImpl;
@@ -67,8 +69,6 @@ import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
 import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
 import org.apache.tapestry5.internal.structure.ComponentPageElementResourcesSource;
 import org.apache.tapestry5.internal.structure.ComponentPageElementResourcesSourceImpl;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-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;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
index c30d813..5fb0ae5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/JavaScriptModule.java
@@ -18,6 +18,9 @@ import org.apache.tapestry5.BooleanHook;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.annotations.Path;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.corelib.components.FontAwesomeIcon;
 import org.apache.tapestry5.corelib.components.Glyphicon;
 import org.apache.tapestry5.internal.InternalConstants;
@@ -33,10 +36,7 @@ import org.apache.tapestry5.internal.services.javascript.JavaScriptStackSourceIm
 import org.apache.tapestry5.internal.services.javascript.ModuleDispatcher;
 import org.apache.tapestry5.internal.services.javascript.ModuleManagerImpl;
 import org.apache.tapestry5.internal.util.MessageCatalogResource;
-import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.Primary;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/NoBootstrapModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/NoBootstrapModule.java
index bb894df..895d509 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/NoBootstrapModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/NoBootstrapModule.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.modules;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 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/modules/TapestryModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
index 56e996a..6fe0ac9 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
@@ -22,6 +22,16 @@ 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.commons.*;
+import org.apache.tapestry5.commons.internal.BasicDataTypeAnalyzers;
+import org.apache.tapestry5.commons.internal.services.AnnotationDataTypeAnalyzer;
+import org.apache.tapestry5.commons.internal.services.DefaultDataTypeAnalyzer;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.services.*;
+import org.apache.tapestry5.commons.util.AvailableValues;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.StrategyRegistry;
 import org.apache.tapestry5.corelib.data.SecureOption;
 import org.apache.tapestry5.grid.GridConstants;
 import org.apache.tapestry5.grid.GridDataSource;
@@ -68,13 +78,23 @@ import org.apache.tapestry5.internal.translator.StringTranslator;
 import org.apache.tapestry5.internal.util.RenderableAsBlock;
 import org.apache.tapestry5.internal.util.StringRenderable;
 import org.apache.tapestry5.internal.validator.ValidatorMacroImpl;
-import org.apache.tapestry5.ioc.*;
+import org.apache.tapestry5.ioc.MethodAdviceReceiver;
+import org.apache.tapestry5.ioc.OperationTracker;
+import org.apache.tapestry5.ioc.ScopeConstants;
+import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.*;
-import org.apache.tapestry5.ioc.internal.BasicDataTypeAnalyzers;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
+import org.apache.tapestry5.ioc.services.Builtin;
+import org.apache.tapestry5.ioc.services.ChainBuilder;
+import org.apache.tapestry5.ioc.services.LazyAdvisor;
+import org.apache.tapestry5.ioc.services.MasterObjectProvider;
+import org.apache.tapestry5.ioc.services.PerThreadValue;
+import org.apache.tapestry5.ioc.services.PerthreadManager;
+import org.apache.tapestry5.ioc.services.PipelineBuilder;
+import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
+import org.apache.tapestry5.ioc.services.ServiceOverride;
+import org.apache.tapestry5.ioc.services.StrategyBuilder;
+import org.apache.tapestry5.ioc.services.SymbolSource;
+import org.apache.tapestry5.ioc.services.ThreadLocale;
 import org.apache.tapestry5.json.JSONArray;
 import org.apache.tapestry5.json.JSONObject;
 import org.apache.tapestry5.plastic.MethodAdvice;
@@ -609,8 +629,8 @@ public final class TapestryModule
      * <dd>Checks for {@link org.apache.tapestry5.beaneditor.DataType} annotation</dd>
      * <dt>Default (ordered last)</dt>
      * <dd>
-     * {@link org.apache.tapestry5.internal.services.DefaultDataTypeAnalyzer} service (
-     * {@link #contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.ioc.MappedConfiguration)} )</dd>
+     * {@link org.apache.tapestry5.commons.internal.services.DefaultDataTypeAnalyzer} service (
+     * {@link #contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.commons.MappedConfiguration)} )</dd>
      * </dl>
      */
     public static void contributeDataTypeAnalyzer(OrderedConfiguration<DataTypeAnalyzer> configuration,
@@ -1231,7 +1251,7 @@ public final class TapestryModule
 
     /**
      * Analyzes properties to determine the data types, used to
-     * {@linkplain #provideDefaultBeanBlocks(org.apache.tapestry5.ioc.Configuration)} locale
+     * {@linkplain #provideDefaultBeanBlocks(org.apache.tapestry5.commons.Configuration)} locale
      * display and edit blocks for properties. The default behaviors
      * look for a {@link org.apache.tapestry5.beaneditor.DataType} annotation
      * before deriving the data type from the property type.
@@ -1667,7 +1687,7 @@ public final class TapestryModule
 
     /**
      * Contributes a default object renderer for type Object, plus specialized
-     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.ioc.Location},
+     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.commons.Location},
      * {@link org.apache.tapestry5.ComponentResources}, {@link org.apache.tapestry5.EventContext},
      * {@link AvailableValues},
      * List, and Object[].
@@ -2435,7 +2455,7 @@ public final class TapestryModule
     /**
      * Advises the {@link org.apache.tapestry5.services.messages.ComponentMessagesSource} service so
      * that the creation
-     * of {@link org.apache.tapestry5.ioc.Messages} instances can be deferred.
+     * of {@link org.apache.tapestry5.commons.Messages} instances can be deferred.
      *
      * @since 5.1.0.0
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java b/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java
index 913ce75..a6e7cd3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java
@@ -15,13 +15,13 @@
 package org.apache.tapestry5.runtime;
 
 import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 
 /**
  * A wrapper exception around any exception thrown when invoking a component event handler. In some cases, the
  * underlying exception may have been a declared exception, and will be wrapped in a RuntimeException.
  *
- * @see org.apache.tapestry5.ioc.util.ExceptionUtils#findCause(Throwable, Class)
+ * @see org.apache.tapestry5.commons.util.ExceptionUtils#findCause(Throwable, Class)
  */
 public class ComponentEventException extends TapestryException
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java
index 53f5af1..aa867aa 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java
@@ -17,7 +17,7 @@
 
 package org.apache.tapestry5.services;
 
-import org.apache.tapestry5.ioc.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java
index faf8f35..4482369 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 
 /**
  * Used by {@link AssetSource} to create new {@link Asset}s as needed.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java
index df82262..8baa8c0 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java
@@ -14,7 +14,7 @@ package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 import org.apache.tapestry5.ioc.services.SymbolSource;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
@@ -29,7 +29,7 @@ import java.util.Locale;
  * a JAR, such as a component library). Other domains can be defined via contributions to the AssetSource service.
  *
  * Since 5.1.0.0, is is preferred that
- * {@link org.apache.tapestry5.services.AssetFactory#createAsset(org.apache.tapestry5.ioc.Resource)} return an instance
+ * {@link org.apache.tapestry5.services.AssetFactory#createAsset(org.apache.tapestry5.commons.Resource)} return an instance
  * of {@link org.apache.tapestry5.Asset2}.
  */
 @UsesMappedConfiguration(AssetFactory.class)
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java
index b921456..b7c537e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java
@@ -27,8 +27,8 @@ import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
  * Tapestry contributes a number of default data types and corresponding edit and display blocks. The {@link
  * org.apache.tapestry5.services.BeanBlockOverrideSource} service allows these to be overridden.
  *
- * @see org.apache.tapestry5.services.DataTypeAnalyzer
- * @see org.apache.tapestry5.modules.TapestryModule#provideDefaultBeanBlocks(org.apache.tapestry5.ioc.Configuration)
+ * @see org.apache.tapestry5.commons.services.DataTypeAnalyzer
+ * @see org.apache.tapestry5.modules.TapestryModule#provideDefaultBeanBlocks(org.apache.tapestry5.commons.Configuration)
  */
 @UsesConfiguration(BeanBlockContribution.class)
 public interface BeanBlockSource
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java
index 18238b6..cbab49f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.services;
 
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 
 /**
  * Defines a context for editing a bean via {@link org.apache.tapestry5.corelib.components.BeanEditor}.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java
index e7f336a..a51f22d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java
@@ -14,7 +14,7 @@ package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 
 /**
  * Creates a binding of a particular type.  This is usually invoked from the {@link
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java
index 6049584..7abe387 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java
@@ -14,7 +14,7 @@ package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.commons.Location;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java
index ac777f4..2fbc0e2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java
@@ -12,8 +12,8 @@
 
 package org.apache.tapestry5.services;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.assets.ClasspathAssetRequestHandler;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.IncompatibleChange;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
@@ -21,7 +21,7 @@ import java.util.Map;
 
 /**
  * Used as part of the support for classpath {@link org.apache.tapestry5.Asset}s, to convert the Asset's
- * {@link org.apache.tapestry5.ioc.Resource} to a URL that can be accessed by the client. The asset path, within the
+ * {@link org.apache.tapestry5.commons.Resource} to a URL that can be accessed by the client. The asset path, within the
  * classpath, is converted into a shorter virtual path. The term "alias" here is generally referred to as
  * "virtual folder" elsewhere.
  *
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
index de77c43..e84d175 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
@@ -47,7 +47,7 @@ public interface ComponentClassResolver
      * @param pageName
      *         page name
      * @return fully qualified class name for the page
-     * @throws org.apache.tapestry5.ioc.util.UnknownValueException
+     * @throws org.apache.tapestry5.commons.util.UnknownValueException
      *         if the name does not match a known page class
      */
     String resolvePageNameToClassName(String pageName);
@@ -96,7 +96,7 @@ public interface ComponentClassResolver
      * Returns the canonical form of a page name. The canonical form uses character case matching the underlying class
      * name.
      *
-     * @throws org.apache.tapestry5.ioc.util.UnknownValueException
+     * @throws org.apache.tapestry5.commons.util.UnknownValueException
      *         if the page name does not match a logical page name
      */
     String canonicalizePageName(String pageName);
@@ -108,7 +108,7 @@ public interface ComponentClassResolver
      * @param componentType
      *         a logical component type
      * @return fully qualified class name
-     * @throws org.apache.tapestry5.ioc.util.UnknownValueException
+     * @throws org.apache.tapestry5.commons.util.UnknownValueException
      *         if the component type can not be resolved
      */
     String resolveComponentTypeToClassName(String componentType);
@@ -120,7 +120,7 @@ public interface ComponentClassResolver
      * @param mixinType
      *         a logical mixin type
      * @return fully qualified class name
-     * @throws org.apache.tapestry5.ioc.util.UnknownValueException
+     * @throws org.apache.tapestry5.commons.util.UnknownValueException
      *         if the mixin type can not be resolved
      */
     String resolveMixinTypeToClassName(String mixinType);
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java
index 4f530ad..7e52c5f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java
@@ -18,7 +18,7 @@ import java.lang.annotation.*;
 
 
 /**
- * Marker annotation used to inject the correct {@link org.apache.tapestry5.services.InvalidationEventHub} service
+ * Marker annotation used to inject the correct {@link org.apache.tapestry5.commons.services.InvalidationEventHub} service
  * responsible for validations when component message catalog (i.e., ".properties") files change.
  *
  * @since 5.1.0.0
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java
index 89bc0e0..389d176 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java
@@ -18,7 +18,7 @@ import java.lang.annotation.*;
 
 
 /**
- * Marker annotation used to inject the correct {@link org.apache.tapestry5.services.InvalidationEventHub} service
+ * Marker annotation used to inject the correct {@link org.apache.tapestry5.commons.services.InvalidationEventHub} service
  * responsible for validations when component template files change.
  *
  * @since 5.1.0.0
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java
index fdce9a9..1c5c35e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java
@@ -18,7 +18,7 @@ package org.apache.tapestry5.services;
  * Used to convert values used in event contexts to client string representations and back.
  *
  * @see org.apache.tapestry5.ValueEncoder
- * @see org.apache.tapestry5.ioc.services.TypeCoercer
+ * @see org.apache.tapestry5.commons.services.TypeCoercer
  */
 public interface ContextValueEncoder
 {
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java
index bac1a73..5d7341d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java
@@ -18,8 +18,8 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldTranslator;
 import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
 
 import java.util.Locale;
 
@@ -30,7 +30,7 @@ public interface FieldTranslatorSource
 {
     /**
      * Common shorthand for {@link #createDefaultTranslator(org.apache.tapestry5.Field, String,
-     * org.apache.tapestry5.ioc.Messages, java.util.Locale, Class, org.apache.tapestry5.ioc.AnnotationProvider)}.
+     * org.apache.tapestry5.commons.Messages, java.util.Locale, Class, org.apache.tapestry5.commons.AnnotationProvider)}.
      *
      * @param resources     of component who owns the parameter
      * @param parameterName name of parameter used to determine the property type
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java
index 184d442..17f6c38 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.services;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
 
 import java.util.Locale;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java
index ffd4582..34e80af 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java
@@ -15,8 +15,8 @@ package org.apache.tapestry5.services;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldValidator;
 import org.apache.tapestry5.Validator;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
 import java.util.Locale;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java
index f34579b..9b8daf8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java
@@ -112,7 +112,7 @@ public interface FormSupport extends ClientElement
     String getFormComponentId();
 
     /**
-     * Id used as a prefix when searching {@link org.apache.tapestry5.ioc.Messages} for validation messages and
+     * Id used as a prefix when searching {@link org.apache.tapestry5.commons.Messages} for validation messages and
      * constraints. This is normally the simple id of the form.
      *
      * @return validation id string
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialTemplateRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialTemplateRenderer.java
index dd179a9..3551232 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialTemplateRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialTemplateRenderer.java
@@ -13,8 +13,8 @@ package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.alerts.Alert;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.runtime.RenderCommand;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java
index 38e2ec3..bc21526 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.services;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.FieldTranslator;
 import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.Messages;
 
 /**
  * Defines a context for editing a property of a bean via {@link org.apache.tapestry5.corelib.components.BeanEditor}.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java
index 4f34767..7b01d6e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.services;
 
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.ioc.Messages;
 
 /**
  * Provides context information needed when displaying a value. This interface is an integral part of the {@link Grid}
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java
index ed28b38..a454da2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java
@@ -36,7 +36,7 @@ public interface ResourceDigestGenerator
 {
     /**
      * Examines the path (typically, the file name extension at the end of the path) to determine if a checksum is
-     * required for the path. The path is {@link org.apache.tapestry5.ioc.Resource} style, without a leading slash.
+     * required for the path. The path is {@link org.apache.tapestry5.commons.Resource} style, without a leading slash.
      *
      * As of Tapestry 5.4, simply returns false.
      */
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java
index 84f8100..e601e21 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.services;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newMap;
 
 import java.util.Map;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java
index 5890b90..006242b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java
@@ -13,8 +13,8 @@
 package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.Translator;
+import org.apache.tapestry5.commons.util.StrategyRegistry;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
 
 /**
  * A source for {@link org.apache.tapestry5.Translator}s, either by name or by property type. The source knows
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java
index 55d55a4..178891a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.services;
 
 import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
+import org.apache.tapestry5.commons.AnnotationProvider;
 import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
 
 import java.util.List;
@@ -24,7 +24,7 @@ import java.util.List;
  * Invoked to generate a list of validation constraint strings for a property. This typically involves scanning the
  * property for annotations or naming conventions that confer the desired validation. The constraint strings are
  * ultimately handed to {@link FieldValidatorSource#createValidator(org.apache.tapestry5.Field, String, String, String,
- * org.apache.tapestry5.ioc.Messages, java.util.Locale)}.
+ * org.apache.tapestry5.commons.Messages, java.util.Locale)}.
  */
 @UsesOrderedConfiguration(ValidationConstraintGenerator.class)
 public interface ValidationConstraintGenerator
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java
index 7013291..af63592 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/AjaxResponseRenderer.java
@@ -34,7 +34,7 @@ public interface AjaxResponseRenderer
      *         client id of zone to update with the content from the renderer
      * @param renderer
      *         a {@link org.apache.tapestry5.Block}, {@link org.apache.tapestry5.runtime.Component} or other object that can be
-     *         {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer coerced} to  {@link org.apache.tapestry5.runtime.RenderCommand}.
+     *         {@linkplain org.apache.tapestry5.commons.services.TypeCoercer coerced} to  {@link org.apache.tapestry5.runtime.RenderCommand}.
      * @return the renderer, for a fluid interface
      */
     AjaxResponseRenderer addRender(String clientId, Object renderer);
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetChecksumGenerator.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetChecksumGenerator.java
index 8961a97..f13163f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetChecksumGenerator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetChecksumGenerator.java
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry5.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
-
 import java.io.IOException;
 
+import org.apache.tapestry5.commons.Resource;
+
 /**
- * Generates a checksum of an arbitrary {@link org.apache.tapestry5.ioc.Resource} or {@link StreamableResource} which can be incorporated into
+ * Generates a checksum of an arbitrary {@link org.apache.tapestry5.commons.Resource} or {@link StreamableResource} which can be incorporated into
  * the {@linkplain org.apache.tapestry5.Asset#toClientURL() client URL} of an Asset.
  *
  * @since 5.4
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java
index db67493..a952d82 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java
@@ -35,7 +35,7 @@ public interface AssetPathConstructor
      * @param virtualFolder
      *         corresponds to a {@link AssetRequestHandler} contributed to the AssetDispatcher service
      * @param path
-     *         a path that can be used to identify the underlying {@link org.apache.tapestry5.ioc.Resource} or
+     *         a path that can be used to identify the underlying {@link org.apache.tapestry5.commons.Resource} or
      *         or re-acquire the {@link StreamableResource}; this will be the final portion of the URL, after
      *         the appropriate prefix (based on whether the resource is compressed or not) and the checksum for the
      *         resource
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ContentTypeAnalyzer.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ContentTypeAnalyzer.java
index 1a7c045..4424afb 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ContentTypeAnalyzer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ContentTypeAnalyzer.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 import org.apache.tapestry5.services.Context;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceDependencies.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceDependencies.java
index efc5f14..e31f63e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceDependencies.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceDependencies.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 
 /**
  * Used by some {@link ResourceTransformer} implementations to track additional dependencies that can arise
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
index 686fa58..c853781 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/ResourceTransformer.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.services.assets;
 
 import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 
 import java.io.IOException;
 import java.io.InputStream;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
index 255f35a..4131610 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResource.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.services.assets;
 
 import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.annotations.IncompatibleChange;
 
 import java.io.IOException;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceProcessing.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceProcessing.java
index 1cee331..04e78af 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceProcessing.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceProcessing.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.services.assets;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.services.javascript.JavaScriptStack;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
index 70974aa..60f3009 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/StreamableResourceSource.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.services.assets;
 
 import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
 import java.io.IOException;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/dynamic/DynamicTemplateParser.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/dynamic/DynamicTemplateParser.java
index 2dbd809..953a027 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/dynamic/DynamicTemplateParser.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/dynamic/DynamicTemplateParser.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.services.dynamic;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 
 /**
  * Parses a dynamic template based on a resource or an input stream.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/AMDWrapper.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/AMDWrapper.java
index 6c940fe..9a03c58 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/AMDWrapper.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/AMDWrapper.java
@@ -12,12 +12,12 @@
 
 package org.apache.tapestry5.services.javascript;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Flow;
 import org.apache.tapestry5.func.Mapper;
 import org.apache.tapestry5.func.Predicate;
 import org.apache.tapestry5.internal.util.VirtualResource;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.io.ByteArrayInputStream;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.java
index 8b7427e..93c760b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.java
@@ -12,11 +12,11 @@
 
 package org.apache.tapestry5.services.javascript;
 
-import org.apache.tapestry5.ioc.Resource;
-
 import java.util.Arrays;
 import java.util.List;
 
+import org.apache.tapestry5.commons.Resource;
+
 /**
  * Used to define a <a href="http://requirejs.org/docs/api.html#config-shim">module shim</a>, used to adapt non-AMD JavaScript libraries
  * to operate like proper modules.  This information is used to build up a list of dependencies for the contributed JavaScript module,
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
index f4f2f35..98c0e15 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
@@ -12,9 +12,9 @@
 
 package org.apache.tapestry5.services.javascript;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
index fa23295..908318b 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/ModuleManager.java
@@ -12,8 +12,8 @@
 
 package org.apache.tapestry5.services.javascript;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
 
 import java.util.List;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java
index e7b967a..ff72f4e 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry5.services.messages;
 
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationEventHub;
 import org.apache.tapestry5.ioc.annotations.NotLazy;
 import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
 import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 
 import java.util.Locale;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java
index 0639e3e..d3ea9c2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java
@@ -17,9 +17,9 @@ package org.apache.tapestry5.services.messages;
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.util.CaseInsensitiveMap;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CaseInsensitiveMap;
 
 /**
  * Used when constructing a component's {@link Messages} object. Responsible for reading the
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceLocator.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceLocator.java
index 7dc7373..12b89ab 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceLocator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceLocator.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.services.pageload;
 
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.util.LocalizedNameGenerator;
 import org.apache.tapestry5.model.ComponentModel;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceSelector.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceSelector.java
index 2f4dbac..6e30fd2 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceSelector.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/pageload/ComponentResourceSelector.java
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry5.services.pageload;
 
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
 import java.util.Collections;
 import java.util.Locale;
 import java.util.Map;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+
 /**
  * Encapsulates the information that is used when locating a template or message catalog associated with a component.
  * The selector is combined with the component class name to locate the other resources. The selector defines one or
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
index d7a4335..753f009 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
@@ -13,7 +13,7 @@
 package org.apache.tapestry5.services.templates;
 
 import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/InjectionProvider2.java b/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/InjectionProvider2.java
index 00de768..0be231d 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/InjectionProvider2.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/services/transform/InjectionProvider2.java
@@ -12,7 +12,7 @@
 
 package org.apache.tapestry5.services.transform;
 
-import org.apache.tapestry5.ioc.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectLocator;
 import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.plastic.PlasticField;
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 2665378..539dd51 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
@@ -22,11 +22,11 @@ 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.commons.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.MapMessages;
 import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.ioc.*;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.ioc.test.IOCTestCase;
 import org.apache.tapestry5.model.ComponentModel;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeExpansionModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeExpansionModel.java
index 43e6d1b..5097880 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeExpansionModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeExpansionModel.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.tree;
 
 import org.apache.tapestry5.BaseOptimizedSessionPersistedObject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.util.Set;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeModel.java
index a9f696b..27ddbf4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeModel.java
@@ -13,9 +13,9 @@
 package org.apache.tapestry5.tree;
 
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.util.Collections;
 import java.util.LinkedList;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeSelectionModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeSelectionModel.java
index d4c2094..6499795 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeSelectionModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/tree/DefaultTreeSelectionModel.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.tree;
 
 import org.apache.tapestry5.BaseOptimizedSessionPersistedObject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.util.Set;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java b/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
index ef3f89b..e84657a 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
@@ -19,10 +19,10 @@ import java.util.List;
 
 import org.apache.tapestry5.OptionGroupModel;
 import org.apache.tapestry5.OptionModel;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.OptionModelImpl;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 /**
  * A basic select model for a particular Enum type. The labels for each Enum are drawn from the Enum instance name and
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java b/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java
index e6e06bb..176d508 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.util;
 
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 /**
  * A value encoder that can be used for arbitrary Enum types. The enum name is stored as the client side value.
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java b/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java
index 0910611..e352e45 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.util;
 
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.MessagesImpl;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
 
 import java.util.Collection;
 
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/CheckboxValidator.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/CheckboxValidator.java
index 9ae7af0..4cdc1d5 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/CheckboxValidator.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/CheckboxValidator.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.javascript.DataConstants;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Checked.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Checked.java
index 6a24cc9..408ac2c 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Checked.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Checked.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.validator;
 
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Html5Support;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java
index 9307592..ac3990f 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Html5Support;
 import org.apache.tapestry5.services.javascript.DataConstants;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java
index 48c9b65..add90ce 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Html5Support;
 import org.apache.tapestry5.services.javascript.DataConstants;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java
index 6254f4f..e52add8 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.javascript.DataConstants;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java
index 88931ce..b100047 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Html5Support;
 import org.apache.tapestry5.services.javascript.DataConstants;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java
index f8fb44b..c82bcac 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.javascript.DataConstants;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java
index ad54efe..7e561e3 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 
 /**
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java
index 88debab..aa4c846 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.javascript.DataConstants;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java
index 2d6be67..5410a71 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.validator;
 import org.apache.tapestry5.Field;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
+import org.apache.tapestry5.commons.MessageFormatter;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.FormSupport;
 import org.apache.tapestry5.services.Html5Support;
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/DateFieldValidationDemo.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/DateFieldValidationDemo.groovy
index 014d81e..3feb53d 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/DateFieldValidationDemo.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/DateFieldValidationDemo.groovy
@@ -1,7 +1,6 @@
 package org.apache.tapestry5.integration.app1.pages
 
 import org.apache.tapestry5.alerts.AlertManager
-import org.apache.tapestry5.annotations.Property
 import org.apache.tapestry5.ioc.annotations.Inject
 
 class DateFieldValidationDemo {
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/ZoneFormDemo.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/ZoneFormDemo.groovy
index 560a0b0..f196bbe 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/ZoneFormDemo.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/pages/ZoneFormDemo.groovy
@@ -6,8 +6,8 @@ import org.apache.tapestry5.alerts.AlertManager
 import org.apache.tapestry5.annotations.Environmental
 import org.apache.tapestry5.annotations.InjectComponent
 import org.apache.tapestry5.beaneditor.Validate
-import org.apache.tapestry5.corelib.components.Zone
 import org.apache.tapestry5.ioc.annotations.Inject
+import org.apache.tapestry5.corelib.components.Zone
 
 /**
  * Used to demonstrate Ajax updates to a form including decoration.
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/pages/Error404.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/pages/Error404.groovy
index 0845a9d..c180748 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/pages/Error404.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/pages/Error404.groovy
@@ -1,11 +1,11 @@
 package org.apache.tapestry5.integration.app5.pages
 
+import javax.servlet.http.HttpServletResponse
+
 import org.apache.tapestry5.ioc.annotations.Inject
 import org.apache.tapestry5.services.Request
 import org.apache.tapestry5.services.Response
 
-import javax.servlet.http.HttpServletResponse
-
 class Error404 {
 
     @Inject
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/services/AppModule.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/services/AppModule.groovy
index 04c413a..cfb5f6e 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/services/AppModule.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app5/services/AppModule.groovy
@@ -13,12 +13,12 @@
 package org.apache.tapestry5.integration.app5.services
 
 import org.apache.tapestry5.SymbolConstants
+import org.apache.tapestry5.commons.MappedConfiguration
+import org.apache.tapestry5.commons.Resource
 import org.apache.tapestry5.func.F
 import org.apache.tapestry5.integration.app5.Client
 import org.apache.tapestry5.integration.app5.ClientTracker
 import org.apache.tapestry5.internal.services.assets.DelegatingSRS
-import org.apache.tapestry5.ioc.MappedConfiguration
-import org.apache.tapestry5.ioc.Resource
 import org.apache.tapestry5.ioc.annotations.Decorate
 import org.apache.tapestry5.model.ComponentModel
 import org.apache.tapestry5.services.ApplicationStateManager
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/appfolder/services/AppModule.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/appfolder/services/AppModule.groovy
index 859994e..41ff5d8 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/appfolder/services/AppModule.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/appfolder/services/AppModule.groovy
@@ -1,7 +1,7 @@
 package org.apache.tapestry5.integration.appfolder.services
 
 import org.apache.tapestry5.SymbolConstants
-import org.apache.tapestry5.ioc.MappedConfiguration
+import org.apache.tapestry5.commons.MappedConfiguration
 import org.apache.tapestry5.ioc.annotations.Contribute
 import org.apache.tapestry5.ioc.services.ApplicationDefaults
 import org.apache.tapestry5.ioc.services.SymbolProvider
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/locallib/alpha/pages/Logo.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/locallib/alpha/pages/Logo.groovy
index c34a46d..9f4e9ba 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/locallib/alpha/pages/Logo.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/locallib/alpha/pages/Logo.groovy
@@ -3,7 +3,6 @@ package org.apache.tapestry5.integration.locallib.alpha.pages
 import org.apache.tapestry5.Asset
 import org.apache.tapestry5.annotations.Import
 import org.apache.tapestry5.annotations.Path
-import org.apache.tapestry5.ioc.annotations.Description;
 import org.apache.tapestry5.ioc.annotations.Inject
 
 @Import(library="show-logo.js")
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/symbolparam/services/AppModule.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/symbolparam/services/AppModule.groovy
index f396f99..738ec46 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/symbolparam/services/AppModule.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/symbolparam/services/AppModule.groovy
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.integration.symbolparam.services
 
 import org.apache.tapestry5.SymbolConstants
-import org.apache.tapestry5.ioc.MappedConfiguration
+import org.apache.tapestry5.commons.MappedConfiguration
 import org.apache.tapestry5.ComponentParameterConstants
 
 class AppModule {
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.groovy
index 78b016e..1343188 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.groovy
@@ -1,17 +1,17 @@
 package org.apache.tapestry5.internal.services
 
+import static org.easymock.EasyMock.isA
+
+import org.apache.tapestry5.commons.util.CollectionFactory
+import org.apache.tapestry5.commons.util.UnknownValueException
 import org.apache.tapestry5.internal.test.InternalBaseTestCase
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory
 import org.apache.tapestry5.ioc.services.ClassNameLocator
-import org.apache.tapestry5.ioc.util.UnknownValueException
 import org.apache.tapestry5.services.ComponentClassResolver
 import org.apache.tapestry5.services.LibraryMapping
 import org.easymock.EasyMock
 import org.slf4j.Logger
 import org.testng.annotations.Test
 
-import static org.easymock.EasyMock.isA
-
 class ComponentClassResolverImplTest extends InternalBaseTestCase {
 
     private static final String APP_ROOT_PACKAGE = "org.example.app"
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerTest.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerTest.groovy
index d60af4a..05a535a 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerTest.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerTest.groovy
@@ -1,12 +1,12 @@
 package org.apache.tapestry5.internal.services
 
+import javax.servlet.http.HttpServletRequest
+
 import org.apache.tapestry5.internal.InternalConstants;
 import org.apache.tapestry5.ioc.test.TestBase
 import org.apache.tapestry5.services.ResponseCompressionAnalyzer
 import org.testng.annotations.Test
 
-import javax.servlet.http.HttpServletRequest
-
 class ResponseCompressionAnalyzerTest extends TestBase {
 
   @Test
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/CSSURLRewriterTests.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/CSSURLRewriterTests.groovy
index b2ddf3e..fe14fb0 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/CSSURLRewriterTests.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/CSSURLRewriterTests.groovy
@@ -1,8 +1,8 @@
 package org.apache.tapestry5.internal.services.assets
 
 import org.apache.tapestry5.Asset
+import org.apache.tapestry5.commons.Resource
 import org.apache.tapestry5.internal.test.InternalBaseTestCase
-import org.apache.tapestry5.ioc.Resource
 import org.apache.tapestry5.services.AssetSource
 import org.testng.annotations.Test
 
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/ModuleReaderSpec.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/ModuleReaderSpec.groovy
index c32f4fc..e6d871f 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/ModuleReaderSpec.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/assets/ModuleReaderSpec.groovy
@@ -1,15 +1,7 @@
 package org.apache.tapestry5.internal.services.assets
 
-import org.apache.tapestry5.internal.services.IdentityAssetPathConverter
 import org.apache.tapestry5.internal.services.assets.JavaScriptStackAssemblerImpl.ModuleReader;
-import org.apache.tapestry5.internal.util.VirtualResource;
 import org.apache.tapestry5.ioc.test.TestBase
-import org.apache.tapestry5.services.BaseURLSource
-import org.apache.tapestry5.services.PathConstructor
-import org.apache.tapestry5.services.Request
-import org.apache.tapestry5.services.assets.AssetChecksumGenerator
-import org.apache.tapestry5.services.assets.CompressionStatus
-import org.apache.tapestry5.services.assets.StreamableResource
 import org.testng.annotations.Test
 
 class ModuleReaderTest extends TestBase {
diff --git a/tapestry-core/src/test/groovy/org/apache/tapestry5/services/javascript/AMDWrapperTest.groovy b/tapestry-core/src/test/groovy/org/apache/tapestry5/services/javascript/AMDWrapperTest.groovy
index bbf328e..816c96b 100644
--- a/tapestry-core/src/test/groovy/org/apache/tapestry5/services/javascript/AMDWrapperTest.groovy
+++ b/tapestry-core/src/test/groovy/org/apache/tapestry5/services/javascript/AMDWrapperTest.groovy
@@ -1,6 +1,6 @@
 package org.apache.tapestry5.services.javascript
 
-import org.apache.tapestry5.ioc.Resource
+import org.apache.tapestry5.commons.Resource
 import org.apache.tapestry5.test.TapestryTestCase
 import org.testng.annotations.Test;
 
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 f7428a2..b687aaf 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
@@ -15,9 +15,9 @@ package org.apache.tapestry5.corelib.base;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.beanmodel.PropertyConduit;
 import org.apache.tapestry5.beanmodel.PropertyModel;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.testng.annotations.Test;
 
 public class AbstractPropertyOutputTest extends InternalBaseTestCase
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 53d66ce..be4a134 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
@@ -24,12 +24,12 @@ import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.integration.app1.data.RegistrationData;
 import org.apache.tapestry5.internal.BeanValidationContext;
 import org.apache.tapestry5.internal.BeanValidationContextImpl;
-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.Environment;
 import org.apache.tapestry5.test.TapestryTestCase;
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 fd7482d..2c3d155 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
@@ -17,9 +17,9 @@ package org.apache.tapestry5.corelib.components;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
 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;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.services.BeanBlockSource;
 import org.apache.tapestry5.test.TapestryTestCase;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
index 6456384..3fafab8 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
@@ -13,6 +13,9 @@
 package org.apache.tapestry5.corelib.components;
 
 import org.apache.tapestry5.*;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.corelib.components.SelectTest.Platform;
 import org.apache.tapestry5.corelib.data.BlankOption;
 import org.apache.tapestry5.corelib.data.SecureOption;
@@ -28,9 +31,6 @@ import org.apache.tapestry5.internal.services.MarkupWriterImpl;
 import org.apache.tapestry5.internal.services.StringValueEncoder;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ContextValueEncoder;
 import org.apache.tapestry5.services.Request;
 import org.apache.tapestry5.services.ValueEncoderSource;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java
index 4f152e6..574d2d7 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java
@@ -20,9 +20,9 @@ import java.util.List;
 import java.util.Set;
 
 import org.apache.tapestry5.MarkupWriter;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.MarkupWriterImpl;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.testng.annotations.Test;
 
 /**
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx/services/AppModule.java
index eede5c8..e2e6e82 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx/services/AppModule.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.integration.activationctx.services;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 
 /**
  *
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx2/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx2/services/AppModule.java
index 720e69b..a8e201f 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx2/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/activationctx2/services/AppModule.java
@@ -16,7 +16,7 @@ package org.apache.tapestry5.integration.activationctx2.services;
 
 import org.apache.tapestry5.MetaDataConstants;
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 
 /**
  *
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
index 05ded5a..5fb9fed 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/Stuff.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.integration.app1;
 
 import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.tree.DefaultTreeModel;
 import org.apache.tapestry5.tree.TreeModel;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java
index 3ebe5ee..189a51d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java
@@ -17,7 +17,7 @@ package org.apache.tapestry5.integration.app1.base;
 import org.apache.tapestry5.annotations.OnEvent;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/OverrideEventHandlerDemoBaseClass.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/OverrideEventHandlerDemoBaseClass.java
index babfbb4..e633067 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/OverrideEventHandlerDemoBaseClass.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/OverrideEventHandlerDemoBaseClass.java
@@ -2,7 +2,7 @@ package org.apache.tapestry5.integration.app1.base;
 
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java
index fbaa53d..ecfdbb4 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java
@@ -15,7 +15,7 @@ package org.apache.tapestry5.integration.app1.components;
 import org.apache.tapestry5.annotations.AfterRender;
 import org.apache.tapestry5.annotations.Parameter;
 import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.internal.util.IntegerRange;
+import org.apache.tapestry5.commons.util.IntegerRange;
 
 /**
  * A component that can count up or count down.
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java
index 1a5598e..acbc145 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java
@@ -18,7 +18,7 @@ import org.apache.tapestry5.beaneditor.DataType;
 import org.apache.tapestry5.beaneditor.ReorderProperties;
 import org.apache.tapestry5.beaneditor.Validate;
 import org.apache.tapestry5.beaneditor.Width;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 
 import java.util.List;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java
index c1800d3..b7740c9 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java
@@ -20,8 +20,8 @@ import org.apache.tapestry5.FieldTranslator;
 import org.apache.tapestry5.MarkupWriter;
 import org.apache.tapestry5.annotations.BindParameter;
 import org.apache.tapestry5.annotations.InjectContainer;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 
 /**
  * Renders a plain-text version of a value where
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 82b9934..5b0ec2c 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
@@ -17,10 +17,10 @@ package org.apache.tapestry5.integration.app1.pages;
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.Messages;
 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 java.util.List;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AjaxRadioDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AjaxRadioDemo.java
index 3fdb85d..baa2f89 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AjaxRadioDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AjaxRadioDemo.java
@@ -2,9 +2,9 @@ package org.apache.tapestry5.integration.app1.pages;
 
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.integration.app1.data.Department;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 
 public class AjaxRadioDemo
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java
index 7a76fcb..cf7d3ca 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java
@@ -20,11 +20,11 @@ import org.apache.tapestry5.alerts.Duration;
 import org.apache.tapestry5.alerts.Severity;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.integration.app1.services.MusicLibrary;
 import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java
index 893cd4a..dac3c73 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java
@@ -18,8 +18,8 @@ import org.apache.tapestry5.Block;
 import org.apache.tapestry5.annotations.Id;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Retain;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.util.Map;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ChecklistDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ChecklistDemo.java
index d9ce68c..dd54fb8 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ChecklistDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ChecklistDemo.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.integration.app1.pages;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.util.Collections;
 import java.util.List;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java
index 97c5f8a..d2ad064 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java
@@ -16,8 +16,8 @@ package org.apache.tapestry5.integration.app1.pages;
 
 import org.apache.tapestry5.annotations.Component;
 import org.apache.tapestry5.annotations.Persist;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 
 import java.io.IOException;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
index bdee6f8..825f865 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
@@ -22,9 +22,9 @@ import java.util.Map;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.func.F;
 import org.apache.tapestry5.integration.app1.data.DateHolder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 public class DateFieldAjaxFormLoop
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java
index 0960075..7b60d10 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.integration.app1.pages;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.PersistentLocale;
 
 import java.text.DateFormat;
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 0df26b0..36be3c4 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
@@ -25,7 +25,7 @@ import org.apache.tapestry5.annotations.Property;
 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.commons.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 
 public class EmptyGrid
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
index f18e844..f3af9fd 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
@@ -18,8 +18,8 @@ import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Log;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.integration.app1.data.DoubleItem;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.testng.Assert;
 
 import java.util.Collections;
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 56eecef..7127b8f 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
@@ -2,8 +2,8 @@ package org.apache.tapestry5.integration.app1.pages;
 
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 
 import java.util.Collection;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java
index 9b924a6..df403c4 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.integration.app1.pages;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.integration.app1.services.MusicLibrary;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 
 import java.util.Set;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Html5DateFieldDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Html5DateFieldDemo.java
index 2cff7e6..1c98216 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Html5DateFieldDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Html5DateFieldDemo.java
@@ -21,8 +21,8 @@ import java.util.Locale;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.PersistentLocale;
 
 public class Html5DateFieldDemo
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
index 6fb46bc..6fdd8d1 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
@@ -18,8 +18,8 @@ import org.apache.tapestry5.PersistenceConstants;
 import org.apache.tapestry5.annotations.InjectPage;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
 import org.apache.tapestry5.services.PageRenderLinkSource;
 import org.apache.tapestry5.services.StreamPageContent;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java
index 94754b0..b879801 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.integration.app1.pages;
 
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 import org.apache.tapestry5.services.PersistentLocale;
 import org.apache.tapestry5.services.Request;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java
index dfb7d7b..09d9abe 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java
@@ -17,7 +17,7 @@ import java.util.Date;
 
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 
 public class OverrideDateFieldMessageCatalogDemo
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java
index 2f92fc6..d626c4c 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java
@@ -20,9 +20,9 @@ import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Import;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.integration.app1.data.ProgrammingLanguage;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.util.EnumSelectModel;
 import org.apache.tapestry5.util.EnumValueEncoder;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java
index 58bfa60..e2dd401 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java
@@ -17,9 +17,9 @@ package org.apache.tapestry5.integration.app1.pages;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.integration.app1.data.Department;
 import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 
 public class RadioDemo
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java
index 75d4d98..f6c1277 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java
@@ -18,10 +18,10 @@ import org.apache.tapestry5.SelectModel;
 import org.apache.tapestry5.ValueEncoder;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.integration.app1.data.CarMaker;
-import org.apache.tapestry5.ioc.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.util.EnumSelectModel;
 import org.apache.tapestry5.util.EnumValueEncoder;
 
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 84f1f8a..d152c8d 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
@@ -16,10 +16,10 @@ package org.apache.tapestry5.integration.app1.pages;
 
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.Messages;
 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 java.util.List;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeSelectionDemo.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeSelectionDemo.java
index a594a33..42389ee 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeSelectionDemo.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TreeSelectionDemo.java
@@ -4,10 +4,10 @@ import org.apache.tapestry5.annotations.InjectComponent;
 import org.apache.tapestry5.annotations.Log;
 import org.apache.tapestry5.annotations.Persist;
 import org.apache.tapestry5.annotations.Property;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.corelib.components.Tree;
 import org.apache.tapestry5.integration.app1.Stuff;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
 import org.apache.tapestry5.tree.DefaultTreeSelectionModel;
 import org.apache.tapestry5.tree.TreeModel;
 import org.apache.tapestry5.tree.TreeNode;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
index c47e7b9..da3efe3 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
@@ -25,21 +25,21 @@ import java.util.Map;
 
 import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.ValueEncoder;
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.integration.app1.data.Address;
 import org.apache.tapestry5.integration.app1.data.Entity;
 import org.apache.tapestry5.integration.app1.data.ToDoItem;
 import org.apache.tapestry5.integration.app1.data.Track;
 import org.apache.tapestry5.internal.services.GenericValueEncoderFactory;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.ServiceBinder;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.ImportModule;
 import org.apache.tapestry5.ioc.annotations.Marker;
 import org.apache.tapestry5.ioc.annotations.Value;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.ioc.services.ServiceOverride;
 import org.apache.tapestry5.modules.Bootstrap4Module;
 import org.apache.tapestry5.modules.NoBootstrapModule;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/EnableJQueryModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/EnableJQueryModule.java
index fa2f3ff..2abbe80 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/EnableJQueryModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/EnableJQueryModule.java
@@ -1,7 +1,7 @@
 package org.apache.tapestry5.integration.app1.services;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.services.ApplicationDefaults;
 import org.apache.tapestry5.ioc.services.SymbolProvider;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java
index 9a3eda1..1a29c84 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java
@@ -14,7 +14,7 @@
 
 package org.apache.tapestry5.integration.app1.services;
 
-import org.apache.tapestry5.ioc.Messages;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.ioc.annotations.Inject;
 
 public class MessageAccessImpl implements MessageAccess
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java
index 504b0ba..dc0a79d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.integration.app1.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.Stack;
 import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
 import org.slf4j.Logger;
 import org.xml.sax.Attributes;
 import org.xml.sax.InputSource;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java
index 36ea3a3..ebd5cde 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java
@@ -14,10 +14,11 @@
 
 package org.apache.tapestry5.integration.app1.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.integration.app1.data.ToDoItem;
 import org.apache.tapestry5.integration.app1.data.Urgency;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
 
 import java.util.Collections;
 import java.util.Comparator;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java
index de317e2..b8585ab 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.integration.app2.services;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 
 public class LocaleAppModule
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
index bf68160..1e8c9c5 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
@@ -15,15 +15,15 @@
 package org.apache.tapestry5.integration.app3.services;
 
 import org.apache.tapestry5.SymbolConstants;
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.integration.app3.components.OverrideComponent;
 import org.apache.tapestry5.integration.app3.components.OverridenComponent;
 import org.apache.tapestry5.integration.app3.mixins.OverrideMixin;
 import org.apache.tapestry5.integration.app3.mixins.OverridenMixin;
 import org.apache.tapestry5.integration.app3.pages.OverridePage;
 import org.apache.tapestry5.integration.app3.pages.OverridenPage;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.services.ComponentOverride;
 import org.apache.tapestry5.services.DisplayBlockContribution;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/cluster/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/cluster/services/AppModule.java
index bcebd95..7be73cf 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/cluster/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/cluster/services/AppModule.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.integration.cluster.services;
 
+import org.apache.tapestry5.commons.MappedConfiguration;
 import org.apache.tapestry5.integration.cluster.data.AnalyzedSessionObject;
-import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java
index 6822f6e..e8aa552 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java
@@ -18,10 +18,10 @@ import java.util.Locale;
 
 import org.apache.tapestry5.EventContext;
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.EmptyEventContext;
 import org.apache.tapestry5.internal.services.ArrayEventContext;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.ComponentEventRequestParameters;
 import org.apache.tapestry5.services.LocalizationSetter;
 import org.apache.tapestry5.services.PersistentLocale;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java
index 49bd285..8de0949 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java
@@ -15,8 +15,8 @@
 package org.apache.tapestry5.integration.linktrans.services;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
+import org.apache.tapestry5.commons.OrderedConfiguration;
 import org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
 import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java
index d04764b..7771db9 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java
@@ -18,9 +18,9 @@ import java.util.Locale;
 
 import org.apache.tapestry5.Link;
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.services.ArrayEventContext;
 import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.LocalizationSetter;
 import org.apache.tapestry5.services.PageRenderRequestParameters;
 import org.apache.tapestry5.services.PersistentLocale;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java
index 9defed4..c9a2471 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.integration.pagelevel;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Document;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.test.PageTester;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java
index 94e5d97..3acc274 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java
@@ -14,9 +14,9 @@
 
 package org.apache.tapestry5.integration.pagelevel;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.dom.Document;
 import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.test.PageTester;
 import org.testng.Assert;
 import org.testng.annotations.AfterMethod;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java
index fbb6a7f..f4f6781 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java
@@ -15,7 +15,7 @@
 package org.apache.tapestry5.integration.reload.services;
 
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 
 public class AppModule
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java
index 1aa950a..64a0e41 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java
@@ -17,8 +17,8 @@ package org.apache.tapestry5.internal;
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.PropertyOverrides;
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
 import org.testng.annotations.Test;
 
 public class PropertyOverridesImplTest extends InternalBaseTestCase
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 ad41dba..258ccdf 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
@@ -18,11 +18,11 @@ 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.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.TypeCoercer;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.runtime.ComponentResourcesAware;
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java
index d5e737d..c504a0d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.beaneditor;
 
+import org.apache.tapestry5.commons.Messages;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.PropertyEditContext;
-import org.apache.tapestry5.ioc.Messages;
 import org.testng.annotations.Test;
 
 import java.util.Arrays;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java
index 8367e26..f8e6987 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java
@@ -18,11 +18,11 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.FieldTranslator;
 import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.BindingFactory;
 import org.apache.tapestry5.services.FieldTranslatorSource;
 import org.testng.annotations.Test;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java
index 72680ea..828a20c 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java
@@ -18,11 +18,11 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.annotations.BeforeRenderBody;
 import org.apache.tapestry5.beaneditor.Validate;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
+import org.apache.tapestry5.commons.util.IntegerRange;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.util.IntegerRange;
-import org.apache.tapestry5.ioc.Location;
 import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.BindingFactory;
 import org.testng.annotations.AfterClass;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java
index b438f46..5311bd1 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java
@@ -17,11 +17,11 @@ package org.apache.tapestry5.internal.bindings;
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.root.FieldComponent;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.BindingFactory;
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 f90ab07..b5fe369 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
@@ -17,10 +17,10 @@ package org.apache.tapestry5.internal.grid;
 import org.apache.tapestry5.beanmodel.BeanModel;
 import org.apache.tapestry5.beanmodel.PropertyModel;
 import org.apache.tapestry5.beanmodel.services.BeanModelSource;
+import org.apache.tapestry5.commons.Messages;
 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.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/model/MutableComponentModelImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
index 5ae0d3b..ff2df90 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
@@ -16,9 +16,9 @@ package org.apache.tapestry5.internal.model;
 
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.annotations.BeginRender;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.model.ComponentModel;
 import org.apache.tapestry5.model.MutableComponentModel;
 import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
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 9d6c871..ddd68a8 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
@@ -22,11 +22,11 @@ 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.commons.Messages;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 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.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/AddTransformPagesToCISModule.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AddTransformPagesToCISModule.java
index d7585b7..96c398d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AddTransformPagesToCISModule.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AddTransformPagesToCISModule.java
@@ -1,7 +1,7 @@
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
+import org.apache.tapestry5.commons.Configuration;
+import org.apache.tapestry5.commons.MappedConfiguration;
 import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.LibraryMapping;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java
index 8f17dc5..7551cea 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java
@@ -15,8 +15,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.internal.services.AnnotationDataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.DataTypeAnalyzer;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
 import org.apache.tapestry5.test.TapestryTestCase;
 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 2e267e6..6d91726 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
@@ -15,10 +15,10 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.ObjectLocator;
 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.ApplicationStateContribution;
 import org.apache.tapestry5.services.ApplicationStateCreator;
 import org.apache.tapestry5.services.ApplicationStateManager;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java
index 6556790..01498c4 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java
@@ -15,11 +15,12 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
 import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
 import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
 import org.testng.annotations.Test;
 
+import static org.apache.tapestry5.commons.util.CollectionFactory.newMap;
+
 import java.util.Collections;
 import java.util.Map;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java
index 9ed0d6a..efb743d 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java
@@ -16,12 +16,12 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
 import org.apache.tapestry5.annotations.Path;
+import org.apache.tapestry5.commons.AnnotationProvider;
+import org.apache.tapestry5.commons.ObjectLocator;
+import org.apache.tapestry5.commons.ObjectProvider;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
 import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
 import org.apache.tapestry5.services.AssetSource;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java
index bf57ab9..ff6620a 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java
@@ -15,9 +15,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.internal.QuietOperationTracker;
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
 import org.apache.tapestry5.ioc.services.SymbolSource;
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 52cfd07..92e0e5d 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
@@ -16,10 +16,10 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Block;
 import org.apache.tapestry5.beanmodel.services.*;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 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.BeanBlockContribution;
 import org.apache.tapestry5.services.BeanBlockOverrideSource;
 import org.apache.tapestry5.services.BeanBlockSource;
@@ -27,11 +27,11 @@ import org.apache.tapestry5.services.DisplayBlockContribution;
 import org.apache.tapestry5.services.EditBlockContribution;
 import org.testng.annotations.Test;
 
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
+
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
 public class BeanBlockSourceImplTest extends InternalBaseTestCase
 {
     private static final Collection<BeanBlockContribution> EMPTY_CONFIGURATION = Collections.emptyList();
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java
index f36fcd2..4642b75 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java
@@ -16,16 +16,18 @@ package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.internal.services.StringInterner;
+import org.apache.tapestry5.commons.internal.services.StringInternerImpl;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.BindingFactory;
 import org.apache.tapestry5.services.BindingSource;
 import org.testng.annotations.Test;
 
-import java.util.Map;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newMap;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
+import java.util.Map;
 
 public class BindingSourceImplTest extends InternalBaseTestCase
 {
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
index 2995d42..235efad 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
@@ -14,10 +14,10 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.util.CollectionFactory;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
 import org.apache.tapestry5.services.AssetAlias;
 import org.apache.tapestry5.services.ClasspathAssetAliasManager;
 import org.testng.annotations.DataProvider;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java
index 3cd0ef9..08ba051 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java
@@ -13,9 +13,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.ClientDataEncoder;
 import org.apache.tapestry5.services.PersistentFieldChange;
 import org.apache.tapestry5.services.Request;
@@ -30,7 +30,7 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
+import static org.apache.tapestry5.commons.util.CollectionFactory.newList;
 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/ComponentDefaultProviderImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImplTest.java
index f757915..2867003 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImplTest.java
@@ -18,11 +18,11 @@ import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.BindingConstants;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.FieldTranslator;
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.services.ClassPropertyAdapter;
+import org.apache.tapestry5.commons.services.PropertyAccess;
+import org.apache.tapestry5.commons.services.PropertyAdapter;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.BindingSource;
 import org.apache.tapestry5.services.ComponentDefaultProvider;
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 9c1df38..fb791f1 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
@@ -19,10 +19,10 @@ 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.commons.services.TypeCoercer;
 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.ComponentClassResolver;
 import org.apache.tapestry5.services.ComponentEventLinkEncoder;
 import org.apache.tapestry5.services.ComponentEventRequestParameters;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java
index 3d87a53..49d334a 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java
@@ -18,10 +18,10 @@ import java.util.Arrays;
 import java.util.List;
 import java.util.Locale;
 
+import org.apache.tapestry5.commons.Messages;
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
 import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
index 531ef3d..25dfd94 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
@@ -20,14 +20,14 @@ import java.util.Locale;
 import java.util.UUID;
 
 import org.apache.tapestry5.TapestryConstants;
+import org.apache.tapestry5.commons.Resource;
+import org.apache.tapestry5.commons.services.InvalidationListener;
 import org.apache.tapestry5.internal.parser.ComponentTemplate;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
 import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
 import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
 import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationListener;
 import org.apache.tapestry5.services.pageload.ComponentResourceLocator;
 import org.apache.tapestry5.services.pageload.ComponentResourceSelector;
 import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java
index 15d4750..ab61610 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.apache.tapestry5.services.Context;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java
index 0823c24..7f81c9e 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.Resource;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
 import org.apache.tapestry5.services.Context;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java
index 90ad924..a24ec20 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.util.CollectionFactory;
 import org.apache.tapestry5.internal.test.TestableRequestImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
 import org.testng.Assert;
 import org.testng.annotations.Test;
 
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandlerTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandlerTest.java
index 5cfd190..9fc1122 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandlerTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandlerTest.java
@@ -15,10 +15,10 @@ package org.apache.tapestry5.internal.services;
 import org.apache.tapestry5.ContextAwareException;
 import org.apache.tapestry5.ExceptionHandlerAssistant;
 import org.apache.tapestry5.Link;
+import org.apache.tapestry5.commons.internal.util.TapestryException;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.ServiceResources;
 import org.apache.tapestry5.ioc.internal.OperationException;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
 import org.apache.tapestry5.services.ComponentClassResolver;
 import org.apache.tapestry5.services.ExceptionReporter;
 import org.apache.tapestry5.services.Request;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
index 7e1ac95..5f26ce5 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
+import org.apache.tapestry5.commons.Location;
+import org.apache.tapestry5.commons.util.UnknownValueException;
 import org.apache.tapestry5.runtime.Component;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.test.TapestryTestCase;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java
index 55d6bb6..6843b56 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java
@@ -14,8 +14,8 @@
 
 package org.apache.tapestry5.internal.services;
 
+import org.apache.tapestry5.commons.services.PlasticProxyFactory;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.PlasticProxyFactory;
 import org.apache.tapestry5.services.Environment;
 import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
 import org.apache.tapestry5.services.javascript.JavaScriptSupport;
diff --git a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java
index 8e8b2d8..5cca280 100644
--- a/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java
+++ b/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java
@@ -15,9 +15,9 @@
 package org.apache.tapestry5.internal.services;
 
 import org.apache.tapestry5.EventContext;
+import org.apache.tapestry5.commons.services.TypeCoercer;
 import org.apache.tapestry5.internal.EmptyEventContext;
... 5359 lines suppressed ...