I think I've read countless stackexchange questions and answers on these issues and none of them ever seemed to do it right and consistently across all processes