change all event block to weak