Author: Tim Waugh since 0.0.19 maintained by Ondrej Vasik