Changes including separating CollectionType from CollectionBuilder & making it a class not an enum (allows for custom CollectionType objects) & more