return self in callback