use new_handle instead of creating a new callback each time