added ability to save and load to json