more robust enumerable methods