first_handle needs to be static