When I first started working with Tapestry I had just completed a CMS style application with WebObjects. The whole application consisted of a single page component with parts of the page marked as 'dynamic' with logic applied to swap out the contents of these dynamic areas according to some logic based on user navigation and some content scheduling. I wanted the same type of feature in Tapestry without having to pre-declare Blocks containing the components so I could just add components for different content types to a project and get them to just 'show' up on existing pages.