enumerable solution