Josef Weidendorfer (Josef.Weidendorfer@gmx.de)

Part of the code is by Nicholas Nethercote.