In restructuring legacy code it may be useful to introduce a design pattern in order to add clarity to the system and thus facilitate further program evolution. We show that aspects of this transformation can be automated and present a nascent high-level language for describing transformations that introduce design patterns. The role of preconditions in preserving program behaviour during this process is also discussed. We conclude by considering the value of this approach in dealing with legacy code.