moved scatter gather logic to zu-core