moved exchange family pp work to a separate function for profiling