from Will Maier <willmaier at ml1.net> with tweaks by maintainer Nick Nauwelaerts <nick at nauwelaerts.net>.