{impersonator,chaperone}-struct: change protocol to receive `self`