serialize each module to prepare for multithreading. Also if things crash, not all data is lost.