revised according collect_captures(), but don't know why