source and license B by David Revoy