Refactoring is a technique to restructure code in a disciplined way, and is well suited to tool support, though extant tools are rather basic. Refactoring is common and vital practice in object-oriented programming, Forth programming, and forms a central part of the Extreme Programming methodology.