See also: http://www.lysator.liu.se/~zander/ewan.html for details.