saves should be atomic now, split out persistentence and validation mechanisms