def METHOD_NAME(self, ts, create_class=core.halo.Halo):
    halos = []
    n_tot = []
    enumerator = self._autoadd_zeros(self.simulation_output.enumerate_objects)
    for catalog_id, finder_id, NDM, Nstar, Ngas in enumerator(ts.extension, object_typetag=create_class.tag,
                                                  min_halo_particles=self.min_halo_particles):
        n_tot.append(NDM+Nstar+Ngas)
    if self.renumber:
        database_id = np.zeros(len(n_tot), dtype=int)
        # Sort by total particle number, largest objects first. Use mergesort for sort stability.
        database_id[np.argsort(-np.array(n_tot),kind='mergesort')] = np.arange(len(n_tot)) + 1
    else:
        database_id = [None]*len(n_tot)
    for database_number, (catalog_id, finder_id, NDM, Nstar, Ngas) in zip(database_id,
                                                             enumerator(ts.extension, object_typetag=create_class.tag,
                                                                        min_halo_particles=self.min_halo_particles)):
        if database_number is None:
            database_number = catalog_id
        if (NDM+Nstar+Ngas >= self.min_halo_particles or NDM==0) \
                and (self.max_num_objects is None or database_number<=self.max_num_objects ):
            h = create_class(ts, database_number, finder_id, catalog_id, NDM, Nstar, Ngas)
            halos.append(h)
    logger.info("Add %d %ss to timestep %r", len(halos), create_class.__name__, ts)
    self.session.add_all(halos)
    self.session.commit()