Transformation is the process of making changes to the system so that the new system has the same functionality but in a new form that meets the goals of the project. There are several types of transformations, and more than one may be applicable to a given project. Transformations to remove dead code and reduce the unnecessary replication of code is usually the first step. Refactoring the code to group together features dramatically simplifies maintenance. Untangling complex modules reduces complexity and simplifies testing. Renaming identifiers can aid maintainability as well as bring the code into conformance with present day coding standards. Identifying and replacing anti-patterns can have a significant impact on code performance as well.