Kiczales et al[#!kiczales97!#] have introduced Aspect-Oriented Programming as a way to help separate out concerns such as those discussed here. They have created ``aspect languages'' and associated tools that allow developers to isolate those parts of programs that deal with, for example, concurrency control, and then weave them back together via pre-processing to generate full programs. This approach has some chance of improving the management of complexity during development, but does not yet deal with broader issues of reuse.