Various unremembered changes in engagement.py; but they look reasonable.