I have had some small experience passing classes around. Let me say what I have gotten to work well and then let others make suggestions for improvement. Essentially, a class is nothing more than a collection of bytes. Thus, a class pointer can be recast as a char pointer. Then, sizeof(class) can be stored or sent as char. Once retrieved as a char vector, the char pointer can be recast as a class pointer. Moving char vectors around using MPICH2 is very easy. There are three issues with this approach: 1. Class functions are no longer available. If possible, use structures instead. 2. Have not been able to delete the new class pointer (recast from char), although I have not yet tried deleting the original char pointer. 3. Pointers within the class are not valid. This approach only works for fixed data sizes. For instance, "char string_vector[100]" works but "char *string_vector" does not. Best, Peter.