Using im_func to avoid bug with inheritance.
Passing set_on