#4: separate the parsing from the saving