add ability to save to file and load from file