inserting text, and a separate mode for entering commands. There is also an "ex" mode for issuing more complex commands (e.g. search and replace). Under normal circumstances, the editor automatically returns to the previous mode after a command has been issued; however, it is possible to permanently move into this mode using Shift-Q. Derivatives, such as Vim and Neovim Emacs – has the concept of "prefix keys", which trigger a modal state by pressing the control key plus a letter key. Emacs then waits for additional keypresses that complete a keybinding. This differs from vi in that the mode always ends as soon as the command is called (when the sequence of key presses that activates it is completed). Emacs also has many "major and minor" modes that change the available commands, and may be automatically invoked based on file type to more easily edit files of that type. Emacs modes are not restricted to editing text files; modes exist for file browsing, web browsing, IRC and email and their interaction patterns are equivalent to application software within the Emacs environment. Modes are written in Emacs Lisp, and all modes may not be included with all versions. Cisco IOS – certain commands are executed in a "command mode". Tools chosen from a palette in photo-editing and drawing applications are examples of a modal interface. Some advanced image editors have a feature where the same tools can be accessed nonmodally by a keypress, and remain active as long as the key is held down. Releasing the key returns the interface to the modal tool activated by the palette. Video games can use game modes as a mechanic to enhance gameplay. Modal windows block all workflow in the top-level program until the modal window is closed. Modeless Larry Tesler at PARC devised insights for a modeless word processor from the feedback gathered from a user test with newly-hired Sylvia Adams, where she was asked to ad lib some gestures to correct proofreading marks on the digital text. This test convinced Tesler's manager Bill English of the problems with their previous modal interface. Mode errors Modes are often frowned upon in interface design because they are likely to produce mode errors when the user forgets what state the interface is in, performs an action that is appropriate to a different mode, and gets an unexpected and undesired response. A mode error can be