code: func (f *Flow) AddAllToOneStep(input *Dataset, output *Dataset) (step *Step) {
  	step = f.NewStep()
  	step.NetworkType = AllShardToOneShard
  	fromStepToDataset(step, output)
  	fromDatasetToStep(input, step)
  
  	// setup the network
  	task := step.NewTask()
  	if output != nil {
  		fromTaskToDatasetShard(task, output.GetShards()[0])
  	}
  	for _, shard := range input.GetShards() {
  		fromDatasetShardToTask(shard, task)
  	}
  	return
  }
docs: // the task should run on the destination dataset shard