this should probably be Set<T>