mpi sync/async/collective operations, need refactoring