start of collect functions