The main class AddressBook, has the JavaFX stages for the main window and the new contact window. It fills the TableView with the data from an Observablelist. I set it so the user will only save when they click the “save and exit” button. The changes are saved first to contacts_backup.ser (ser for serializable) and then I rename and replace the existing contacts.ser file once the file is finished being written. I have two options on this move command: REPLACE_EXISTING and ATOMIC_MOVE to ensure it overwrites the new file and to do so atomically. This is essentially is a form of write-ahead logging. If the system crashes during a write, it will still read from the contacts.ser file.