update delegate to weak instead of assigned