Redesign the ShuffleCollector to make it loose-coupled