put everything together for MPI backend

still haven't tested multiple processes,
but at least the serial test still works