- decoupled persistence from model