469.event hooks revisted


This replaces #472. It addresses #469, and leaves #476 hanging for future reference.