collect function improve