This is a work in progress. For an explanation and details, see the README.