reworked the collection methods