Finish save refactor. Closes #48. Incidentally closes #70 and closes #28