A computer system sitting between the application and the user that takes over responsibility for the user interaction. Some systems allow old legacy applications to be updated to a modern window-based environment with little or no change to the original application.