run replicate() in a separate thread so that we don't wait for potentially large data objects to be moved around the system.
run replicate() in a separate thread so that we don't wait for potentially large data objects to be moved around the system.