moved out n_components into Data.reducer