I think it is good to start at the abstract level by breaking BrailleBlaster down into functions and subfunctions and specifying what each should do. Since we are using Java, I think we should express the design concretely in terms of Java packages, interfaces, classes and so on. As an example of what a function should do, take the Launcher function. It starts BrailleBlaster, of course. I think it should also get things set up so that everything is ready to run. John -- John J. Boyer; President, Chief Software Developer Abilitiessoft, Inc. http://www.abilitiessoft.com Madison, Wisconsin USA Developing software for people with disabilities