updated commentary
use temp buffers instead of a dedicated scratch

this doesn't leave behind a mess, and it doesn't break if the user kills
the scratch buffer
clean up tests