This module is far from ready, but does contain a useful example. It shows how a module can maintain old runmodes, (for those that have them bookmarked) and still move into the 21century to support ajax. (It also encorages smaller functions so that anything can be called via ajax.) The next step is to move this back into the core so that we can have one standard AJAX function that can not only call can function but any function within any module, (while maintaining all of the user access features.)
This enables any Notice module to fetch a template or fragment and optionally have it parsed for inclusion. This is important for at least two reasons. 1. It enables good policy of having NO html in the Control modules and 2. This works with Notice::Pages so that admin users, (or anyone that you enable) can edit those templates without having to edit the underlying code or needing access to that code.
This creates flat-files for the public part of your site. It uses a templating system that requires no template, (though if you hand it pages.html marked up with id="menu" you will get a lot done.) Pages leverages the power of ckeditor 4.0 and HTML::TreeBuilder
This means that as a sales person works through a list of contacts, they can hide the ones that they have already done. This also works if you want to invide a group of people, (so not just for sales people. We can use ajax to update the database at the same time.