The building of the application depends on the query manager. This should be the first specification written. Once this is done, the application can be designed, based on this manager. The forms and data structures should be organized to match the queries: One form, one frame, or one data structure equals one query per unit of work.
The ability to restart applications and use arriving result sets is not difficult to implement with a query manager and should be considered.
The agents are reusable from project to project with little difficulty because there is nothing that is application-specific. The query manager can be made semi-independent of the application by placing all of the application-specific code in the hand shaking routines:
QueryManager_ReturnQuery2App
This permits the same functionality to be added to other projects easily.