recreating enumerable methods