first pass using bucket to preserve fd