Re-engineering transforms a final user interface into a logical representation that is manipulable enough to allow forward engineering to port a UI from one computing platform to another with maximum flexibility and minimal effort. Re-engineering is used to adapt a UI to another context. This adaptation is governed by two main tasks: the adaptation of the code itself to the new computing plating platform and the redesign of the UI to better suit the new constraints of the target platform (interaction capabilities, screen size,…). To support this process, we have developed a reverse engineering tool that allows a flexible recovery of the presentation model from Web sites, adapting the reverse engineering to the target platforms, and a forward engineering tool that converts this presentation model into any final executable UI, in particular expressed in VRML, WML, …