implement undelegate and new on/off wrappers