use CanBuildFrom in applyCumulative