A long-standing goal of software engineering is to construct software that is easily modified and extended. Recent advances in software design techniques, such as aspect-oriented software development and refactoring, have offered new approaches to address challenges of software evolution. Several tools and language extensions have been developed by others to enable these techniques in a few popular programming languages. However, software exists in a variety of languages. An unfortunate consequence of legacy system adaptation is that new software engineering tools are often developed from scratch without preserving and reusing the knowledge gained from the previous construction of the tool in a different language and platform context. To address this problem, this paper summarizes two core research ideas. First, the concept of extending several software reengineering techniques in disparate programming languages is explored. A core focus of this objective is the ion of transformation ...