web-cleaner: initial revision, includes reworking app-cleaner for programmatic invocation